【发布时间】:2019-09-25 14:46:58
【问题描述】:
我试图找出一种直接的方法来获取当前正在执行的 async 方法的反射属性。如果我只是在常规的非异步方法中做这样的事情,我正在寻找相同的属性:
var method = (MethodInfo)MethodBase.GetCurrentMethod();
但是,如果我在异步方法中,则在使用上述反射代码时,我会从反射中获取 MoveNext() 方法。
我是否只需要使用 StackTrace 或 StackFrame 提升调用堆栈?
我唯一的问题是它有点手动。此代码需要动态,因为我的实现将用于日志记录,并且需要在许多应用程序中可靠和准确。它需要同时使用异步和同步方法/函数。
目前我能找到的只有使用.net CallermemberName 属性的人,它获取当前执行方法的正确名称,但显然我需要的不止这些。
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
您打算使用哪个记录器? Nlog 内置了当前方法stackoverflow.com/questions/21949078/adding-method-name-in-nlog
-
我正在使用 Serilog,不幸的是 NLog 不是一个选项。
标签: c# asynchronous reflection