我在哪种方法?

Dav*_*don 2 c# debugging methods winforms

我的目标是在我的方法中添加一些#if DEBUG但是我不想编辑我复制的代码并粘贴到每个方法中.

是否有像这样的通用代码:

void DoSomething()
            {
#if Debug
            Log("Now In " + MethodName);
#endif
            }
Run Code Online (Sandbox Code Playgroud)

在哪里填充MethodName等于DoSomething,或者哪个方法称为日志?

Adi*_*ter 10

如果您使用的是.NET 4.5,则可以使用以下CallerMemberName属性:

public static GetCallerMemberName([CallerMemberName]string caller = null)
{
    return caller;
}
Run Code Online (Sandbox Code Playgroud)

请注意,在调用此方法时,您不需要将任何内容作为参数传递 - C#编译器会为您完成工作.这也意味着您可以避免在运行时执行反射,这使得此方法更快.

用法:

void DoSomething()
{
#if Debug
    Log("Now In " + GetCallerMemberName()); // Logs "Now in DoSomething"
#endif
}
Run Code Online (Sandbox Code Playgroud)


Ant*_*t P 7

System.Reflection.MethodBase.GetCurrentMethod().Name
Run Code Online (Sandbox Code Playgroud)