Bayangkan yang berikut ini
Tipe T memiliki Perusahaan bidang. Saat menjalankan metode berikut ini, ia bekerja dengan sempurna:
Type t = typeof(T);
t.GetProperty("Company")
Dengan panggilan berikut ini saya mendapatkan null
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
Adakah yang punya ide?
c#
reflection
getproperty
bindingflags
Boris Callens
sumber
sumber
Jawaban:
Anda telah menimpa flag pencarian default, jika Anda menentukan flag baru Anda harus memberikan semua info sehingga properti dapat ditemukan. Sebagai contoh:
BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
sumber
BindingFlags
kepada mereka, tidak akan ada cara untuk tidak menggunakan default. Yaitu Tidak mungkin untuk mengecualikanPublic
properti atau mengecualikanInstance
properti. Mereka memutuskan Anda mengambil default, atau menimpanya dengan menentukan secara tepat apa yang Anda cari.Anda perlu menambahkan
BindingFlags.Public | BindingFlags.Instance
sumber
Terima kasih, ini sangat membantu saya dalam keadaan darurat hari ini. Saya memiliki informasi audit yang disimpan, tetapi dengan casing yang salah pada nama properti. (Audit dibangun menjadi datalayer.) Ngomong-ngomong, jadi saya harus menambahkan IgnoreCase sebagai bendera yang mengikat, tetapi kemudian masih tidak berfungsi, sampai rekan kerja saya menemukan jawaban ini. Fungsi yang dihasilkan:
Ini adalah bagian dari kelas yang saya sebut DotMagic.
sumber