Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengekstrak Pemalar dari Jenis Menggunakan C# Reflection?

Bagaimana untuk Mengekstrak Pemalar dari Jenis Menggunakan C# Reflection?

Linda Hamilton
Lepaskan: 2025-01-05 19:43:44
asal
436 orang telah melayarinya

How to Extract Constants from a Type Using C# Reflection?

Cara Mengekstrak Pemalar daripada sebarang Jenis Menggunakan Refleksi

Refleksi menyediakan cara yang berkesan untuk memeriksa jenis pada masa jalan. Ini membolehkan anda mendapatkan maklumat tentang sifat jenis, kaedah dan juga pemalarnya.

Untuk mendapatkan semua pemalar jenis menggunakan pantulan, anda boleh menggunakan kaedah GetFields dengan bendera mengikat khusus:

BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy
Salin selepas log masuk

Bendera ini memastikan anda mendapatkan semula semua medan statik awam yang diisytiharkan pada jenis semasa atau mana-mana pangkalannya jenis.

Selepas mendapatkan semula tatasusunan objek FieldInfo, anda boleh menapisnya untuk memasukkan pemalar sahaja dengan menyemak bendera IsLiteral dan IsInitOnly:

if(fi.IsLiteral && !fi.IsInitOnly)
Salin selepas log masuk

Bendera IsLiteral menunjukkan bahawa nilai medan ialah ditetapkan pada masa penyusunan, manakala bendera IsInitOnly menunjukkan bahawa medan boleh dimulakan hanya dalam pembina. Untuk pemalar, kedua-dua bendera ini hendaklah benar.

Menggunakan pendekatan ini, anda boleh mengekstrak semua pemalar daripada sebarang jenis dengan cekap menggunakan pantulan:

private List<FieldInfo> GetConstants(Type type)
{
    return type.GetFields(BindingFlags.Public | BindingFlags.Static |
            BindingFlags.FlattenHierarchy)
        .Where(fi => fi.IsLiteral && !fi.IsInitOnly).ToList();
}
Salin selepas log masuk

Kaedah ini mengembalikan senarai objek FieldInfo yang mewakili pemalar yang diisytiharkan dalam jenis yang ditentukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Pemalar dari Jenis Menggunakan C# Reflection?. 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