リフレクションを使用した静的メソッドの呼び出し
リフレクションは、実行時に .NET 型とそのメンバーにアクセスして操作するための強力なメカニズムを提供します。そのようなタスクの 1 つは、クラスの静的メソッドを呼び出すことです。この記事では、リフレクションを使用して特定の名前空間 (mySolution.Macros) で静的メソッドを呼び出すという具体的なニーズについて説明します。
Background
提供されたコード スニペットの目標は次のとおりです。特定の名前空間内の静的クラスのリストを反復処理し、それらの Run メソッドを呼び出します。ただし、メソッドは静的であるため、インスタンスを作成してからメソッドを呼び出すという標準的なアプローチは適用できません。
解決策
静的メソッドを呼び出すための鍵反省とは、静的メソッドでは MethodInfo.Invoke に渡される最初の引数が無視されることを理解することです。したがって、以下の変更されたコードは静的メソッドを正常に呼び出します:
foreach (var tempClass in macroClasses) { // using reflection I will be able to run the method as: tempClass.GetMethod("Run").Invoke(null, null); }
コメントで述べたように、GetMethod:
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
以上がC# でリフレクションを使用して特定の名前空間で静的メソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。