【问题标题】:.NET: Is there a way to know which method the currently executing code is in? (for logging class).NET:有没有办法知道当前执行的代码在哪个方法中? (用于日志记录类)
【发布时间】:2010-01-07 05:12:43
【问题描述】:

我正在用 C# 编写一个日志记录类,并想添加进行日志调用的方法。手动执行此操作并不太有吸引力。有没有办法知道当前执行的代码在哪个方法?

提前感谢您的精彩...

格雷格

编辑:使用 MethodBase...

 System.Reflection.MethodBase thisMethod = System.Reflection.MethodBase.GetCurrentMethod();
 Console.WriteLine("This method is: " + thisMethod.Name);

【问题讨论】:

    标签: c# .net logging


    【解决方案1】:

    使用MethodBase.GetCurrentMethod:

    返回一个 MethodBase 对象,表示当前正在执行的方法。

    MethodBase 类型有一个 Name 属性,它是当前执行方法的名称,为字符串。

    顺便说一句,也许您应该研究现有的日志框架,这样您就不必重新发明轮子了。

    【讨论】:

    • 注意重复调用此反射方法的代价,尽可能缓存调用(例如进入/退出日志记录)。
    【解决方案2】:

    我建议不要这样做。

    • 日志记录方法通常应该具有尽可能小的开销,以便您可以从对性能敏感的代码中调用它。

    • 内联意味着您可能无法获得正确的方法,尤其是在发布版本中。

    • 记录异常时,您将拥有堆栈跟踪作为异常的一部分,这将为您提供抛出异常时的调用堆栈。在记录正常流程时,知道方法名称的用处要小得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2012-04-13
      相关资源
      最近更新 更多