リフレクションを使用した呼び出しメソッドを理解する
C# では、リフレクションを使用して呼び出しメソッドとその元のクラスに関する情報を取得できます。 。これにより、開発者は呼び出しコンテキストの知識を必要とするユーティリティやログ機能を作成できます。
呼び出しメソッド名とクラスの取得
呼び出しメソッドの名前を取得するにはおよびリフレクションを使用して包含クラスを作成するには、次の手順に従います。
を表す StackFrame オブジェクトを作成します。呼び出しメソッドの最初のフレーム (現在のメソッド):
StackFrame frame = new StackFrame(1);
StackFrame からメソッド情報を取得します:
var method = frame.GetMethod();
メソッド名と宣言を抽出するtype:
var name = method.Name; var type = method.DeclaringType;
例
次のクラスを考えます:
public class SomeClass { public void SomeMethod() { // Get the calling method and type 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 が呼び出されるとき、変数の名前と入力が行われます。 SomeClass の SomeMethod には次の値が含まれます:
.NET 4.5 での CallerMemberNameAttribute の使用
.NET 4.5 以降では、CallerMemberNameAttribute を使用する簡略化されたアプローチがあります。
public class SomeClass { public void SomeMethod([CallerMemberName]string memberName = "") { // Output the calling method name Console.WriteLine(memberName); } }
SomeClass.SomeMethod が呼び出されるとき、memberName には呼び出しメソッドの名前が含まれます。 .
以上がC# リフレクションを使用して呼び出しメソッドの名前とクラスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。