Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Refleksi .NET Boleh Digunakan untuk Menemui Semua Pemalar bagi Suatu Jenis?

Bagaimanakah Refleksi .NET Boleh Digunakan untuk Menemui Semua Pemalar bagi Suatu Jenis?

Susan Sarandon
Susan Sarandonasal
2025-01-06 02:36:40884semak imbas

How Can .NET Reflection Be Used to Discover All Constants of a Type?

Meneroka Penemuan Pemalar melalui Refleksi

Dalam bidang pengaturcaraan berorientasikan objek, memahami cara mendapatkan semula semua pemalar yang dikaitkan dengan jenis tertentu ialah tugas yang tidak ternilai untuk introspeksi dan analisis kod. Mujurlah, refleksi .NET menyediakan penyelesaian yang elegan untuk cabaran ini.

Menggunakan kaedah GetFields, kami boleh mengakses semua medan yang diisytiharkan dalam jenis tertentu, termasuk pemalar. Walau bagaimanapun, kita perlu menapis yang memenuhi kriteria tertentu seperti menjadi umum, statik dan tidak boleh diubah (diwakili oleh bendera IsLiteral dan IsInitOnly).

Satu pendekatan melibatkan lelaran melalui semua medan dan secara terpilih menambahkannya. yang memenuhi syarat kami. Ini boleh dicapai menggunakan coretan kod yang serupa dengan yang berikut:

private FieldInfo[] GetConstants(System.Type type)
{
    ArrayList constants = new ArrayList();

    FieldInfo[] fieldInfos = type.GetFields(
        BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);

    foreach(FieldInfo fi in fieldInfos)
        if(fi.IsLiteral && !fi.IsInitOnly)
            constants.Add(fi);           

    return (FieldInfo[])constants.ToArray(typeof(FieldInfo));
}

Penyelesaian ini menyediakan cara yang boleh dipercayai untuk mendapatkan senarai semua pemalar yang dikaitkan dengan jenis, menjadikannya sesuai untuk alat dan kod berasaskan refleksi senario introspeksi.

Atas ialah kandungan terperinci Bagaimanakah Refleksi .NET Boleh Digunakan untuk Menemui Semua Pemalar bagi Suatu Jenis?. 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