Есть ли способ получить имя текущего метода внутри функции async?
Я пробовал:
System.Reflection.MethodInfo.GetCurrentMethod();
И я попытался использовать 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());
}
Но ни один из них не работает, я получаю ".ctor", "InvokeMethod", "Invoke", "CreateInstance", "CreateKnownObject" или "CreateUnknownObject" или "MoveNext"
Любые идеи о том, как я могу это сделать? Я хочу создать общую функцию журнала, и я не хочу передавать имя функции, которая вызвала функцию журнала, поэтому я попробовал метод stacktrace, не работал.
Я отказался от этого и сказал: "Хорошо, я передам имя функции в качестве первого параметра, но когда я вызвал метод отражения от вызывающей функции, вызывающей общую функцию регистрации, я всегда получаю".ctor "
Любые идеи? Обратите внимание, что общая функция logger, которую я вызываю, является статическим методом в том же классе (это должно быть так на данный момент...).