我正在用C#编写一个日志记录类,并希望添加进行日志调用的方法。手动执行此操作并不太吸引人。有没有办法知道当前正在执行的代码所在的方法?
提前感谢您的精彩......
格雷格
编辑:使用MethodBase ...
System.Reflection.MethodBase thisMethod = System.Reflection.MethodBase.GetCurrentMethod();
Console.WriteLine("This method is: " + thisMethod.Name);
答案 0 :(得分:13)
使用MethodBase.GetCurrentMethod
:
返回表示当前正在执行的方法的MethodBase对象。
MethodBase
类型具有Name
属性,该属性是当前正在执行的方法的字符串名称。
作为旁注,或许您应该查看现有的日志记录框架,这样您就不必重新发明轮子了。
答案 1 :(得分:4)
我建议不要这样做。
日志记录方法通常应尽可能减少开销,以便您可以从性能敏感的代码中调用它。
内联意味着您可能无法获得正确的方法,尤其是在发布版本中。
在记录异常时,您将使用堆栈跟踪作为异常的一部分,这将在抛出异常时为您提供调用堆栈。记录正常流量时,知道方法名称的效果要小得多。