リフレクションによる呼び出しメソッドの詳細へのアクセス
質問:
C# でのリフレクションは利用できますか現在のメソッドを呼び出したメソッドの名前とタイプを取得します。方法?
答え:
はい、可能です。これを実現する方法のコード デモを次に示します。
public class SomeClass { public void SomeMethod() { StackFrame frame = new StackFrame(1); MethodBase method = frame.GetMethod(); Type type = method.DeclaringType; string name = method.Name; } }
次の追加クラスを考えてみましょう。
public class Caller { public void Call() { SomeClass s = new SomeClass(); s.SomeMethod(); } }
このシナリオでは、変数の名前と型には値 " が割り当てられます。それぞれ「呼び出し」と「呼び出し元」。
.NET 用の更新4.5:
.NET 4.5 で導入された CallerMemberNameAttribute により、このプロセスが簡素化されます。以下の変更された SomeClass では:
public class SomeClass { public void SomeMethod([CallerMemberName]string memberName = "") { Console.WriteLine(memberName); // Outputs the calling method's name } }
これにより、StackFrame メソッドと GetMethod() メソッドが必要なくなります。
以上がC# リフレクションは呼び出しメソッドの名前と型を明らかにできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。