我的目标是向我的方法中添加一些#if DEBUG,但是我不想编辑我复制并粘贴到每个方法中的代码。
是否有这样一段通用的代码:
void DoSomething()
{
#if Debug
Log("Now In " + MethodName);
#endif
}
MethodName 在哪里被填充为等于 DoSomething,或者调用 Log 的任何方法?
最佳答案
如果您使用的是 .NET 4.5,则可以使用 CallerMemberName
属性:
public static GetCallerMemberName([CallerMemberName]string caller = null)
{
return caller;
}
请注意,调用此方法时,您无需将任何内容作为参数传递 - C# 编译器会为您完成这项工作。这也意味着您可以避免在运行时执行反射,从而使该方法更快。
用法:
void DoSomething()
{
#if Debug
Log("Now In " + GetCallerMemberName()); // Logs "Now in DoSomething"
#endif
}
关于c# - 我使用哪种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21498013/