Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengekstrak Pemalar dari Jenis Menggunakan C# Reflection?
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
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)
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(); }
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!