Menguji Inferens Jenis Generik dalam C# dengan Refleksi Jenis
Dalam C#, memberikan nilai kepada pembolehubah jenis generik memerlukan inferens jenis pada masa penyusunan untuk menentukan jenis nilai sebenar. Ini boleh menyebabkan kekeliruan apabila cuba menguji sama ada objek adalah jenis generik pada masa jalan.
Satu pendekatan biasa, seperti yang dilihat dalam kod asal, ialah membandingkan jenis objek dengan definisi jenis generik . Walau bagaimanapun, ini tidak berfungsi untuk kejadian generik dengan argumen jenis tertentu.
Untuk menguji dengan betul jika objek ialah tika jenis generik, anda boleh menggunakan sifat IsGenericType System.Type:
bool isGeneric = list.GetType().IsGenericType;
Ini akan kembali benar jika objek ialah tika jenis generik, tanpa mengira jenis argumen.
Jika anda secara khusus perlu menguji sama ada objek itu adalah contoh Senarai generik
bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);
Ini akan kembali benar jika objek itu adalah contoh List
Perhatikan bahawa kedua-dua pendekatan menyemak kesetaraan jenis yang tepat. Jika objek itu berasal daripada jenis generik, ujian ini akan mengembalikan palsu.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguji Jenis Generik dalam C# pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!