「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C#でランタイム決定されたタイプの引数を使用して、一般的なメソッドを動的に呼び出すにはどうすればよいですか?

C#でランタイム決定されたタイプの引数を使用して、一般的なメソッドを動的に呼び出すにはどうすればよいですか?

2025-03-22に投稿されました
ブラウズ:523

How Can I Dynamically Invoke Generic Methods with Runtime-Determined Type Arguments in C#?

動的タイプの引数

問題

の汎用メソッドを呼び出すシナリオでは、特定の名前空間でインターフェイスのコレクションを繰り返し、各インターフェイスにジェネリック方法を動的に呼び出します。ただし、コンパイル時に不明なタイプの引数が原因でコンパイル時間エラーが発生します。定義。引数。 System.linqを使用しています。 System.Reflectionを使用しています。 パブリッククラスのテストクラス { public static void callgeneric () { console.writeLine($ "generic type:{typeof(t)}"); } public static void main() { var Assembly = Assembly.getExecutingAssembly(); var interfaces = assembly.getTypes() .where(t => t.namespace == "mynamespace.interfaces"); var genericmethod = typeof(testclass).getMethod( "callgeneric"); foreach(インターフェイス内のvarインターフェイスタイプ) { var genericmethodinstance = genericmethod.makegenericmethod(interfaceType); genericmethodinstance.invoke(null、null); //ターゲットや引数は必要ありません } } }

この例の例:

callgenericメソッドは、一般的なタイプの引数を印刷する一般的な方法として定義されます。各インターフェイスタイプの汎用メソッドインスタンス
  1. ターゲットまたは引数のない一般的なメソッドインスタンスを呼び出します。これはパラメーターのない静的メソッドです。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3