C#メモ 呼び出し元のクラス名とメソッド名を表示してみる

C#

ちょい用事あったので。

ポイントはこんな感じかね?

  • StackFrameクラスをインスタンス化する
  • フレーム数で階層を指定する
  • GetMethodメソッドで取得したオブジェクトのNameプロパティでメソッド名を取得する
  • GetMethodメソッドで取得したオブジェクトのReflectedTypeのFullNameプロパティでクラスのフルパスを取得する

namespaceで追加するのはこんなん。

using System.Diagnostics;

んで、コードはこんなん。

public class Sample
{
    // 実際にクラス名とメソッド名を取得するメソッド
    public static void Function()
    {
        // StackFrameクラスをインスタンス化する
        int nFrame = 1; // フレーム数(1なら直接呼び出したメソッド)
        StackFrame objStackFrame = new StackFrame(nFrame);
        // 呼び出し元のメソッド名を取得する
        string strMethodName = objStackFrame.GetMethod().Name;
        System.Console.WriteLine("Method Name is {0}()", strMethodName);
        // 呼び出し元のクラス名を取得する
        string strClassName = objStackFrame.GetMethod().ReflectedType.FullName;
        System.Console.WriteLine("Class Name is {0}", strClassName);
    }
}

class Program
{
    // エントリーポイント(テスト用)
    static void Main(string[] args)
    {
        // テストメソッドを呼び出す
        Sample.Function();
    }
}

実行した結果はこんなん。

27347_01

んまま、メモって事で。