36


7

呼び出された関数から呼び出し元の関数名を取得

_ 可能な重複: + https://stackoverflow.com/questions/171970/how-can-i-find-the-method-that-c​​alled-the-current-method [現在のメソッドを呼び出したメソッドを見つける方法方法?] _

C#で呼び出された関数から呼び出し元の関数名を取得する方法を教えてください。

2 Answer


73


new StackFrame(1、true).GetMethod()。Name

リリースビルドでは、コンパイラが呼び出されるメソッドをインライン化する場合があることに注意してください。その場合、上記のコードは呼び出し元の呼び出し元を返します。

[MethodImpl(MethodImplOptions.NoInlining)]


14


これにより、自分がいるメソッドの名前がわかります。

string currentMethod = System.Reflection.MethodBase.GetCurrentMethod()。名前。

パフォーマンスが低下する可能性があるため、注意して使用してください。

呼び出し元を取得するには、次のようにします。StackTrace trace = new StackTrace(); int caller = 1;

StackFrame frame = trace.GetFrame(呼び出し元);

文字列callerName = frame.GetMethod()。名前。

これはスタックウォークを使用してメソッド名を取得します。 callerの値は、コールスタックがどれだけ上がるかです。 遠くに行かないように注意してください。