我的目标是在我的方法中添加一些#if DEBUG但是我不想编辑我复制的代码并粘贴到每个方法中。
是否存在这样的通用代码:
void DoSomething()
{
#if Debug
Log("Now In " + MethodName);
#endif
}
在哪里填充MethodName等于DoSomething,或者哪个方法称为Log?
答案 0 :(得分:10)
如果您使用的是.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
}
答案 1 :(得分:7)
System.Reflection.MethodBase.GetCurrentMethod().Name