.NET:有没有办法知道当前正在执行的代码所在的方法? (用于记录类)

时间:2010-01-07 05:12:44

标签: c# .net logging

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

提前感谢您的精彩......

格雷格

编辑:使用MethodBase ...

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

2 个答案:

答案 0 :(得分:13)

使用MethodBase.GetCurrentMethod

  

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

MethodBase类型具有Name属性,该属性是当前正在执行的方法的字符串名称。

作为旁注,或许您应该查看现有的日志记录框架,这样您就不必重新发明轮子了。

答案 1 :(得分:4)

我建议不要这样做。

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

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

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