无论如何从异步函数中获取当前方法名称?
我试过了:
System.Reflection.MethodInfo.GetCurrentMethod();
Run Code Online (Sandbox Code Playgroud)
我尝试使用StackTrace和StrackFrame如下:
StackTrace strackTrace = new StackTrace();
for (int i = 0; i < strackTrace.GetFrames().Length; i++)
{
SafeNativeMethods.EtwTraceInfo("Function" + i + ":" + function);
SafeNativeMethods.EtwTraceInfo("Type" + i + ":" + strackTrace.GetFrame(i).GetType().Name);
SafeNativeMethods.EtwTraceInfo("Method" + i + ":" + strackTrace.GetFrame(i).GetMethod().Name);
SafeNativeMethods.EtwTraceInfo("ToString Call" + i + ":" + strackTrace.GetFrame(i).ToString());
}
Run Code Online (Sandbox Code Playgroud)
但它们似乎都不起作用,我会得到".ctor","InvokeMethod","Invoke","CreateInstance","CreateKnownObject"或"CreateUnknownObject"或"MoveNext"
有关如何做到这一点的任何想法?我想创建一个通用的记录器函数,我不想传入调用记录器函数的函数的名称,所以我尝试了stacktrace方法,没有用.
我放弃了,并说,好吧,我将传递函数名称作为第一个参数,但是当我从调用通用记录器函数的调用函数调用反射方法时,我总是得到".ctor"
有任何想法吗?注意我正在调用的通用记录器函数是同一个类中的静态方法(现在必须以这种方式...).