次のようなジェネリック メソッドを呼び出したいと考えています。実行時まで不明な型引数。たとえば、インターフェイスのリストがあり、各インターフェイスのジェネリック メソッドを呼び出したいとします。
コンパイル時には型引数が不明であるため、現時点では、ジェネリックを使用した従来のメソッド呼び出しは使用できません。代わりに、リフレクションを使用して、実行時に取得した型引数に基づいてジェネリック メソッドを動的に呼び出す必要があります。
このアプローチを実装する方法は次のとおりです。
// Original Method public void Method<T>() { // Method body } // Main Method var assembly = Assembly.GetExecutingAssembly(); var interfaces = assembly.GetTypes().Where(t => t.Namespace == "MyNamespace.Interfaces"); foreach (var interfaceType in interfaces) { MethodInfo genericMethod = typeof(Test).GetMethod("Method"); MethodInfo specificMethod = genericMethod.MakeGenericMethod(interfaceType); specificMethod.Invoke(null, null); // No arguments for this example }
このアプローチでは、リフレクションを利用することで、実行時に不明な型の引数を使用してジェネリック メソッドを動的に呼び出すことができます。
以上が実行時に決定される型引数を使用してジェネリック メソッドを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。