1. ホーム
  2. c#

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

2022-04-23 09:27:14

質問

<ブロッククオート

重複の可能性があります。

現在のメソッドを呼び出したメソッドを見つけるにはどうすればよいですか?

呼び出したメソッドの名前と、呼び出したメソッドを含むクラスの名前を取得するメソッドを書きたいのですが、どうすればいいですか?

C#のリフレクションで可能でしょうか?

どのように解決するのですか?

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();
   }
}

名称 は "Call"となります。 タイプ は "Caller"となります。

UPDATE: 2年後、私はまだこれにupvoteを得るので

.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
    }
}