我正在阅读.NET Framework Development Guide - How to: Use TraceSource and Filters with Trace Listeners,并在开头就有以下建议:
版本2.0的主要区别在于可以通过TraceSource类的实例启动跟踪。 TraceSource旨在用作增强的跟踪系统,可用于代替旧Trace和Debug跟踪类的静态方法。 熟悉的Trace和Debug类仍然存在,但建议的做法是使用TraceSource类进行跟踪。
我理解如何使用TraceSource代替Trace类,但我还没有理解它是如何用来取代Debug的。
以下是一本书C# 5.0 in a Nutshell: The Definitive Reference的引用:
调试 和 跟踪 是提供基本日志记录的静态类 断言能力。
这两个类非常相似; 主要 差异化因素是其预期用途 。
现在,这里有一个更深入的差异描述:
Debug类的所有方法都是用 [有条件的(" DEBUG")] 定义的。
Trace类的所有方法都是用 [有条件的(" TRACE")] 定义的。
因此,它导致在Realease构建中消除Debug次调用:
TraceSource如何解释这种差异?
答案 0 :(得分:0)
我提出的最佳解决方案是编写扩展方法。如果那里有更好的东西,我会将你的答案标记为已接受:)。
public static class TraceSourceExtentions
{
[Conditional("DEBUG")]
public static void TraceDebug(this TraceSource traceSource, string message)
{
traceSource.TraceEvent(
eventType: TraceEventType.Verbose,
id: 0,
format: message);
}
[Conditional("DEBUG")]
public static void TraceDebug(this TraceSource traceSource, string format, params object[] args)
{
traceSource.TraceEvent(
eventType: TraceEventType.Verbose,
id: 0,
format: format,
args: args);
}
}
这个解决方案并不能让我满意,因为如果有多个程序集需要调试跟踪,我们注定要在这些程序集中考虑代码复制或创建外部冗余依赖项(另一个将包含此类的程序集。)