リフレクションを使用した静的メソッドの呼び出し
問題:
内部に複数の静的クラスを所有しています。名前空間 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 サイトの他の関連記事を参照してください。