我在哪种方法?

时间:2014-02-01 12:26:09

标签: c# winforms debugging methods

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

是否存在这样的通用代码:

void DoSomething()
            {
#if Debug
            Log("Now In " + MethodName);
#endif
            }

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

2 个答案:

答案 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