Dalam senario anda, anda ingin mengulangi koleksi antara muka dalam ruang nama tertentu dan menggunakan kaedah generik secara dinamik untuk setiap antara muka. Walau bagaimanapun, anda menghadapi ralat masa kompilasi disebabkan oleh argumen jenis yang tidak diketahui pada masa penyusunan.
Untuk memanggil kaedah generik secara dinamik dengan argumen jenis diketahui masa jalan, anda boleh menggunakan refleksi seperti berikut:
using System; using System.Linq; using System.Reflection; public class TestClass { public static void CallGeneric<T>() { 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 interfaceType in interfaces) { var genericMethodInstance = genericMethod.MakeGenericMethod(interfaceType); genericMethodInstance.Invoke(null, null); // No target or arguments needed } } }
Dalam contoh ini:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Kaedah Generik Secara Dinamik dengan Argumen Jenis Ditentukan Masa Jalan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!