Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memanggil Kaedah Generik dengan Argumen Jenis Yang Ditentukan Masa Jalan?
Anda ingin menggunakan kaedah generik dengan hujah jenis yang tidak diketahui sehingga masa jalan. Sebagai contoh, anda mempunyai senarai antara muka dan anda ingin memanggil kaedah generik untuk setiap antara muka.
Memandangkan hujah jenis tidak diketahui semasa penyusunan masa, anda tidak boleh menggunakan seruan kaedah tradisional dengan generik. Sebaliknya, anda perlu menggunakan refleksi untuk menggunakan kaedah generik secara dinamik berdasarkan argumen jenis yang diperoleh semasa masa jalan.
Begini cara anda boleh melaksanakan pendekatan ini:
// 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 }
Dengan menggunakan refleksi, pendekatan ini membolehkan anda memanggil kaedah generik secara dinamik dengan argumen jenis yang tidak diketahui pada masa jalan.
Atas ialah kandungan terperinci Bagaimana untuk Memanggil Kaedah Generik dengan Argumen Jenis Yang Ditentukan Masa Jalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!