【问题标题】:Which Method Am I In?我采用哪种方法?
【发布时间】:2014-02-25 04:57:54
【问题描述】:

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

有没有这样的通用代码:

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

其中 MethodName 填充为等于 DoSomething 或称为 Log 的任何方法?

【问题讨论】:

标签: c# winforms debugging methods


【解决方案1】:

如果您使用的是 .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
}

【讨论】:

    【解决方案2】:
    System.Reflection.MethodBase.GetCurrentMethod().Name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 2011-01-06
      相关资源
      最近更新 更多