使用另一个方法调用参数调用ConditionalAttribute的方法

anu*_*ith 1 .net c#

我正在研究.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或者其他一些方法只是将其打印出来进行日志记录(我认为序列化对象是一项艰苦的工作).除非我正在调试,否则我不希望它工作.

谢谢.

小智 6

简而言之,整个方法调用将被删除.

另请参阅Microsoft Docs上的说明(链接):

如果定义了符号,则包括呼叫; 否则,省略呼叫(包括接收机的评估和呼叫的参数).