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
Susan Sarandonasal
2025-01-08 18:56:53458semak imbas

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:

<code class="language-csharp">Type type = pi.PropertyType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
{
    Type itemType = type.GetGenericArguments()[0]; // 使用此方法...
}</code>

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:

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

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:
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