menggunakan refleks dinamik memanggil kaedah generik
Oleh kerana parameter jenis tidak diketahui apabila disusun, kaedah panggilan dinamik perlu dicerminkan. Untuk mencapai matlamat ini, ikuti langkah -langkah berikut:
panggil kaedah generik contoh
Dapatkan jenis kelas pengisytiharan kaedah scrang.
<code class="language-csharp">Type myType = FindType(typeName); MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod)); MethodInfo generic = method.MakeGenericMethod(myType); generic.Invoke(this, null);</code>
MethodInfo menggunakan kaedah statik refleksi.
Gunakan parameter jenis yang ditentukan oleh MakegegnericMethod untuk membina kaedah generik.<code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.StaticMethod)); MethodInfo generic = method.MakeGenericMethod(myType); generic.Invoke(null, null);</code>
Untuk c# 4 dan versi yang lebih tinggi, penggunaan jenis dinamik dapat memudahkan proses ini, terutama apabila jenis menyimpulkan mungkin. Walau bagaimanapun, dalam beberapa jenis kesimpulan (seperti contoh yang disediakan), refleks mungkin masih diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan refleksi untuk menggunakan kaedah generik dengan parameter jenis dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!