Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mendapat Kaedah Generik dengan Argumen Jenis Dinamik dalam C# menggunakan Reflection?
Memanggil Kaedah Generik dengan Argumen Jenis Dinamik
Dalam C#, memanggil kaedah generik dengan argumen jenis yang diketahui hanya pada masa pelaksanaan memerlukan memanfaatkan keupayaan refleksi. Cabaran asal melibatkan gelung melalui antara muka dalam ruang nama tertentu dan menggunakan kaedah generik menggunakan antara muka ini sebagai argumen.
Untuk mengatasinya, ikut langkah berikut:
Untuk contoh, pertimbangkan kod berikut:
// Get the generic method MethodInfo method = typeof(Test).GetMethod("CallMe"); // Get the list of interfaces in the specified namespace var types = typeof(Test).Assembly .GetTypes() .Where(t => t.Namespace == "Interfaces"); // Loop through the interfaces foreach (Type type in types) { // Create a specialized generic method MethodInfo genericMethod = method.MakeGenericMethod(type); // Invoke the method with no target or arguments genericMethod.Invoke(null, null); }
Dalam contoh ini, kami mendapatkan semula kaedah generik "CallMe", mencipta versi khusus untuk setiap jenis antara muka dan memanggilnya secara reflektif.
Nota: Jika jenis antara muka yang anda hadapi adalah generik sendiri, gunakan MakeGenericType dan bukannya MakeGenericMethod, masukkan jenis yang sesuai hujah.
Atas ialah kandungan terperinci Bagaimana untuk Mendapat Kaedah Generik dengan Argumen Jenis Dinamik dalam C# menggunakan Reflection?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!