Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menguji Jenis Generik dalam C# pada Runtime?

Bagaimanakah Saya Boleh Menguji Jenis Generik dalam C# pada Runtime?

Patricia Arquette
Lepaskan: 2025-01-06 15:32:40
asal
839 orang telah melayarinya

How Can I Reliably Test for Generic Types in C# at Runtime?

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;
Salin selepas log masuk

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 taip, anda boleh menggunakan kaedah GetGenericTypeDefinition untuk membandingkan takrif jenis objek dengan takrifan List:

bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);
Salin selepas log masuk

Ini akan kembali benar jika objek itu adalah contoh List dengan sebarang jenis hujah.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan