ホームページ >バックエンド開発 >C++ >C# でリフレクションを使用して静的メソッドを呼び出す方法

C# でリフレクションを使用して静的メソッドを呼び出す方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-28 18:45:13883ブラウズ

How to Invoke Static Methods Using Reflection in C#?

リフレクションを使用した静的メソッドの呼び出し

問題:

内部に複数の静的クラスを所有しています。名前空間 mySolution.Macros (それぞれに静的メソッドが含まれています)例:

public static class Indent
{
    public static void Run()
    {
        // implementation
    }
}

あなたの目的は、これらのメソッドが静的であっても、リフレクションを使用して呼び出すことです。

解決策:

静的メソッドを呼び出すには静的な性質を維持しながらリフレクションを使用するメソッドでは、以下を使用します。アプローチ:

foreach (var tempClass in macroClasses)
{
    // Note that the first argument is ignored for static methods
    tempClass.GetMethod("Run").Invoke(null, null);
}

MethodInfo.Invoke のドキュメントで述べたように、最初の引数は静的メソッドでは冗長であるため、null を安全に渡すことができます。

バインディング フラグ:

提案されているように、メソッドを呼び出すときにバインディング フラグを指定する必要がある場合があることに注意することが重要です。コメント内:

tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);

これにより、メソッドがパブリックで静的であることが保証され、適切な呼び出しに必要です。

以上がC# でリフレクションを使用して静的メソッドを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。