【问题标题】:How do I redirect debug output in C#?如何在 C# 中重定向调试输出?
【发布时间】:2013-08-17 21:37:30
【问题描述】:

目前我使用以下方式写出很多状态消息:

Debug.Writeline("This is my status message");

我希望能够创建一种方法,允许我通过Debug 输出消息或将它们重定向到我的 UI 中的文本框。但是,Debug 和 Textbox 对象不兼容。我怎样才能做到这一点,使调用者可以使用相同的消息来生成输出,并让调用方法决定将其发送到哪里(即,到 Debug、UI 甚至日志文件)?

【问题讨论】:

  • 使用Trace,或者类似log4net的东西。
  • 如果您不喜欢第三方日志库,这里有一个建议的方法来创建generic Logger extension method

标签: c# debugging textbox output


【解决方案1】:

您可以创建自己的从TraceListener 派生的类,如Trace listener to write to a text box (WPF application) 接受的答案中所述。

注意:接受的答案详细说明了如何为 C# WinForms 创建自定义跟踪侦听器,尽管问题是关于 WPF。

【讨论】:

    【解决方案2】:

    创建您自己的日志记录类来桥接您的调试类

    interface ILog {
       public void Log();
    }
    
    public DebugLog : ILog {
      public DebugLog(Debug d) {} //ctor that takes Debug Object
      public void Log(){}
    }
    
    public WindowLog : ILog {
      public WindowLog(Text t) {} //ctor that takes window log
      public void Log(){}
    }
    

    【讨论】:

    • 我会将这些方法设为静态,这样我就不必每次都记住要新建 Log 类。
    • 有没有办法多态地做到这一点,所以我可以传入 Textbox.Text 成员或 Debug 对象,并以某种方式对两者使用相同的方法?我不确定我是否对自己解释得足够好,因为我今天起得太早了,而且我不是一个早起的人。 :)
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2021-10-16
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多