【发布时间】:2014-10-07 06:19:02
【问题描述】:
我想设置一个调试标志,以便将“Console”.Writeline 替换为“Log”.WriteLine。 不想写了
if (debug)
Log.writeline("log");
else
Console.Writeline("log"); every time I want to log info.
类似于INFO.Writelline("log"); 的东西,其中 INFO 可以替换为“Log”或“Console”,具体取决于全局变量集。
会使用条件宏,但 C# 不支持。
如果我遗漏了什么,请告诉我。
【问题讨论】:
-
您是否可以创建一个静态方法来抽象您可以使用的分支逻辑。例如: public static void DebugLog(string log) { if (debug) Log.writeline(log);否则 Console.WriteLine(log); }
-
为什么你不能使用正常的
Trace功能,让你几乎可以做到这一点(除了在运行时通过配置文件进行配置)? -
"会使用条件宏,但 C# 不支持" -- 是什么让你产生了这个想法? C# 预定义的符号可能不如 C 的宏强大,但一个简单的
#if是可能的。 -
在我们的源代码上运行 C++ 预处理器首先对您有用(我不会为任何新代码这样做,但在重构代码时可能是可接受的解决方法...)
-
@ALexei:感谢您的输入。但这将涉及对象的附加参数。只需要传递消息。
标签: c# debugging conditional-compilation visual-studio-macros