async関数の中から現在のメソッド名を取得する方法はありますか?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 "
アイデア?私が呼び出すジェネリック・ロガー関数は、同じクラスの静的メソッドであることに注意してください(これは今のところこのようにしなければなりません...)。
P.S. [EventSource> P/Invoke](http://blogs.msdn.com/b/vancem/archive/tags/eventsource/) –