Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menentukan Parameter Jenis Generik Senarai Kosong dalam C#?

Bagaimana untuk Menentukan Parameter Jenis Generik Senarai Kosong dalam C#?

Susan Sarandon
Lepaskan: 2025-01-08 18:56:53
asal
465 orang telah melayarinya

How to Determine the Generic Type Parameter of an Empty List in C#?

Bagaimana untuk menentukan parameter jenis generik senarai kosong dalam C#?

Dalam C#, menggunakan senarai generik (List<T>) biasanya memerlukan mendapatkan maklumat tentang jenis elemen senarai. Walau bagaimanapun, jika senarai generik kosong, mendapatkan jenis ini menjadi mencabar.

Pendekatan biasa ialah menggunakan pantulan untuk menyemak sifat objek myclass yang memegang senarai kosong. Walau bagaimanapun, menggunakan nilai hartanah secara langsung (seperti yang ditunjukkan dalam kod asal) akan gagal kerana sifat senarai kosong dimulakan kepada null.

Untuk mengatasi situasi ini, pendekatan berbeza diperlukan:

Type type = pi.PropertyType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
{
    Type itemType = type.GetGenericArguments()[0]; // 使用此方法...
}
Salin selepas log masuk

Kod ini mula-mula mendapat PropertyType atribut yang diperiksa. Ia kemudian menyemak sama ada jenis ini ialah jenis generik dan sama ada definisi jenis generiknya ialah typeof(List<>). Jika syarat ini dipenuhi, kod akan menggunakan kaedah GetGenericArguments() untuk mengekstrak jenis elemen senarai.

Biasanya, untuk menyokong mana-mana IList<T>, semakan tambahan boleh dilakukan:

foreach (Type interfaceType in type.GetInterfaces())
{
    if (interfaceType.IsGenericType && interfaceType.GetGenericTypeDefinition() == typeof(IList<>))
    {
        Type itemType = interfaceType.GetGenericArguments()[0]; // 注意这里使用interfaceType
        // 执行某些操作...
        break;
    }
}
Salin selepas log masuk

Kod ini menyemak semua antara muka yang jenis itu dilaksanakan, mengenal pasti mana-mana antara muka generik yang mempunyai IList<T>takrif jenis generik. Ia kemudian mengekstrak jenis elemen dengan cara yang sama seperti sebelum ini. Ambil perhatian bahawa di sini kita mendapat parameter generik daripada interfaceType, bukan type.

Penjelasan yang disemak ini menjelaskan proses dan membetulkan ralat kecil dalam coretan kod kedua Ia juga menggunakan lebih banyak tajuk deskriptif dan struktur ayat.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Parameter Jenis Generik Senarai Kosong dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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