我正在尝试找出一种比较直接的方法来获取当前执行异步方法的反射属性。我要寻找的是与在常规的非异步方法中执行以下操作时可用的相同属性:
var method = (MethodInfo)MethodBase.GetCurrentMethod();
但是,如果我在异步方法中使用上述反射代码,我会从反射中得到一个MoveNext()方法。
那么,我只需要使用StackTrace或StackFrame来逐级查找调用堆栈吗?
唯一的问题是这种方法比较繁琐。由于我的实现将用于日志记录,并且需要在许多应用程序中可靠和准确地工作,因此此代码需要具有动态性。它需要适用于异步和同步方法/函数。
目前我能找到的唯一资料就是使用内置的.NET CallermemberName
属性,该属性获取当前执行方法的正确名称,但显然我需要更多信息。
非常感谢您的帮助!