Dalam dunia refleksi .NET, mendapatkan semula senarai sifat yang dihiasi dengan atribut tertentu boleh menjadi keperluan yang kerap. Soalan di tangan berkaitan dengan mengenal pasti sifat yang mengandungi atribut MyAttribute, di mana AllowMultiple ditetapkan kepada palsu.
Pendekatan awal yang dibentangkan diulang melalui semua sifat menggunakan t.GetProperties(), diikuti dengan gelung untuk memeriksa setiap sifat sifat dengan prop.GetCustomAttributes(typeof(MyAttribute), true). Walaupun kaedah ini berfungsi, ia melibatkan mencipta berbilang kejadian atribut, yang boleh menjadi tidak cekap.
Berikut ialah penyelesaian yang lebih baik yang memanfaatkan kaedah sambungan Where daripada LINQ:
var props = t.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
Pendekatan ini memudahkan atribut proses menyemak dengan menggunakan Attribute.IsDefined secara langsung untuk setiap sifat, yang mengesahkan kewujudan atribut yang diingini dengan cekap tanpa membuat seketika ia. Ini meningkatkan prestasi dengan ketara, terutamanya untuk jenis yang mempunyai sejumlah besar sifat.
Selain itu, pembolehubah prop yang terhasil ialah IEnumerable objek PropertyInfo, membolehkan penapisan atau manipulasi selanjutnya mengikut keperluan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Sifat C# yang Dihiasi dengan Atribut Khusus (AllowMultiple = palsu) dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!