Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET:有没有办法知道当前正在执行的代码所在的方法?(用于日志类)_C#_.net_Logging - Fatal编程技术网

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

C# .NET:有没有办法知道当前正在执行的代码所在的方法?(用于日志类),c#,.net,logging,C#,.net,Logging,我正在用C#编写一个日志类,并希望添加进行日志调用的方法。手动操作并不太吸引人。有没有办法知道当前正在执行的代码在哪个方法中 提前感谢您的精彩 格雷格 编辑:使用MethodBase System.Reflection.MethodBase thisMethod = System.Reflection.MethodBase.GetCurrentMethod(); Console.WriteLine("This method is: " + thisMethod.Name); 使用: 返回表

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

提前感谢您的精彩

格雷格

编辑:使用MethodBase

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

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

MethodBase
类型有一个
Name
属性,该属性是当前正在执行的方法的名称(作为字符串)


作为补充说明,也许您应该研究一下现有的日志框架,这样您就不必重新发明轮子了。

我建议不要这样做

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

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

  • 记录异常时,堆栈跟踪将作为异常的一部分,这将在引发异常时为您提供调用堆栈。当记录正常流时,知道方法名就没那么有用了


注意重复调用此反射方法的代价,尽可能缓存这些调用(如输入/退出日志记录)。