リフレクションを使用した呼び出しメソッド情報の取得
呼び出しメソッドの名前と型の取得は、リフレクション ベースのプログラミングの一般的な要件です。関数を実行するときに、その関数が呼び出されたコンテキストを特定すると便利です。
StackFrame クラスの使用
1 つの方法には、StackFrame クラスの使用が含まれます。コンストラクターは、検査するスタックのレベルを表す整数を受け取ります。 1 を渡すことで、呼び出しメソッドに関する情報を取得できます。
public class Caller { public void Call() { StackFrame frame = new StackFrame(1); var method = frame.GetMethod(); var type = method.DeclaringType; var name = method.Name; } }
このコードは、"Call" を name に、"Caller" を type に割り当てます。別のメソッドから呼び出されると仮定します。
CallerMemberName の使用属性
.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 } }
このコードは、追加のリフレクションを必要とせずに、呼び出しメソッドの名前を memberName パラメーターに自動的に割り当てます。
以上がC# でリフレクションを使用して呼び出しメソッドの情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。