.NET で呼び出し元のメソッド情報を知りたいときは

なにげに備忘録。スタックトレース内の最初のフレームのメソッド情報を取得します。以下の方法でおk。

C#

var callingMethod = new System.Diagnostics.StackTrace(1, false).GetFrame(0).GetMethod();
Console.WriteLine(callingMethod.Name);

VB.NET

Dim callingMethod = New System.Diagnostics.StackTrace(1, False).GetFrame(0).GetMethod()
Console.WriteLine(callingMethod.Name)


以下サンプルです。

class Program {
    static void GetCallingMethodName() {
        var callingMethod = new System.Diagnostics.StackTrace(1, false).GetFrame(0).GetMethod();
        Console.WriteLine(callingMethod.Name);
    }
    static void A() {
        GetCallingMethodName();
    }
    static void B() {
        GetCallingMethodName();
    }
    static void C() {
        GetCallingMethodName();
    }
    static void D() {
        GetCallingMethodName();
    }
    static void Main(string[] args) {
        A(); // A
        B(); // B
        C(); // C
        D(); // D
    }
}


参考記事StackTrace クラス
参考記事StackTrace.GetFrames メソッド
参考記事StackFrame.GetMethod メソッド