我正在研究.NET C#(特别是Xamarin.Forms).我不太了解编译器/运行时如何ConditionalAttribute在幕后工作.
如果我有一个System.Diagnostics.ConditionalAttribute定义的方法.像这样的东西:
[System.Diagnostics.Conditional("DEBUG")]
public void LogDebug(string tag, string message, params object[] args)
{
DoSomeThing(tag, message);
SomeLogLibrary.Log($"[{tag}] {message}", args);
}
Run Code Online (Sandbox Code Playgroud)
我称之为
LogDebug("Log data={0}", Newtonsoft.Json.JsonConvert.SerializeObject(somedata));
Run Code Online (Sandbox Code Playgroud)
问题是:SerializeObject被叫时何时DEBUG没有定义?
重要的是,SerializeObject或者其他一些方法只是将其打印出来进行日志记录(我认为序列化对象是一项艰苦的工作).除非我正在调试,否则我不希望它工作.
谢谢.