ホームページ > バックエンド開発 > C++ > C# でリフレクションを使用して呼び出しメソッドの情報を取得するにはどうすればよいですか?

C# でリフレクションを使用して呼び出しメソッドの情報を取得するにはどうすればよいですか?

DDD
リリース: 2025-01-01 10:31:09
オリジナル
978 人が閲覧しました

How Can I Get Calling Method Information Using Reflection in C#?

リフレクションを使用した呼び出しメソッド情報の取得

呼び出しメソッドの名前と型の取得は、リフレクション ベースのプログラミングの一般的な要件です。関数を実行するときに、その関数が呼び出されたコンテキストを特定すると便利です。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート