我正在尝试使用一些条件来增强我的 Logger 类,以控制要记录的内容和记录的位置。我有两种日志记录功能:
public static class Logger
{
[Conditional("Logging"), Conditional("VerboseLogging")]
public static void Log(string msg, string filename)
{
// log to file
}
[Conditional("VerboseLogging")]
public static void VerboseLog(string msg, string filename)
{
Log(msg, filename); // just defer call to Log(string msg)
}
}
但是,运行以下程序
#define Logging
#define VerboseLogging
static void Main(string[] args)
{
Logger.Log("Logging", "");
Logger.VerboseLog("VerboseLogging", "");
}
仅产生输出“Logging”,缺少“VerboseLogging”。
调试应用程序显示 VerboseLogging 确实被调用,但它没有调用Log(msg, filename)
. 调试器只是直接跳过函数调用到函数的末尾VerboseLog()
。
当我从Log(string msg)
方法中删除条件时,它就起作用了。
有没有人知道为什么会发生这种情况或该怎么做才会被调用?