リフレクションを使用して呼び出しメソッドの名前と型を取得するにはどうすればよいですか? [重複] 質問する

リフレクションを使用して呼び出しメソッドの名前と型を取得するにはどうすればよいですか? [重複] 質問する

重複の可能性あり:
現在のメソッドを呼び出したメソッドを見つけるにはどうすればいいでしょうか?

呼び出しメソッドの名前と、呼び出しメソッドを含むクラスの名前を取得するメソッドを記述したいと思います。

C# リフレクションで可能ですか?

ベストアンサー1

public class SomeClass
{
    public void SomeMethod()
    {
        StackFrame frame = new StackFrame(1);
        var method = frame.GetMethod();
        var type = method.DeclaringType;
        var name = method.Name;
    }
}

ここで、次のような別のクラスがあるとします。

public class Caller
{
   public void Call()
   {
      SomeClass s = new SomeClass();
      s.SomeMethod();
   }
}

名前「電話」となり、タイプ「発信者」になります。

更新: 2年経ってもまだこの投稿に賛成票が集まっている

.NET 4.5では、これをはるかに簡単に実行できるようになりました。CallerMemberNameAttribute

前の例に戻ります。

public class SomeClass
{
    public void SomeMethod([CallerMemberName]string memberName = "")
    {
        Console.WriteLine(memberName); // Output will be the name of the calling method
    }
}

おすすめ記事