C# 我用哪种方法?

C# 我用哪种方法?,c#,winforms,debugging,methods,C#,Winforms,Debugging,Methods,我的目标是在我的方法中添加一些#if DEBUG,但是我不想编辑复制并粘贴到每个方法中的代码 是否有这样一段通用代码: void DoSomething() { #if Debug Log("Now In " + MethodName); #endif } 其中MethodName填充为相等的DoSomething,或任何称为日志的方法?如果您使用的是.NET 4.5,则可以使用以下属性: System.Reflectio

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

是否有这样一段通用代码:

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

其中MethodName填充为相等的DoSomething,或任何称为日志的方法?

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

System.Reflection.MethodBase.GetCurrentMethod().Name
public static GetCallerMemberName([CallerMemberName]string caller = null)
{
    return caller;
}
请注意,在调用此方法时,您不需要将任何内容作为参数传递-C#编译器为您完成这项工作。这也意味着您避免在运行时执行反射,这使得该方法更快

用法:

void DoSomething()
{
#if Debug
    Log("Now In " + GetCallerMemberName()); // Logs "Now in DoSomething"
#endif
}
可能重复的