Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mencari Sifat C# yang Dihiasi dengan Atribut Khusus (AllowMultiple = palsu) dengan Cekap?

Bagaimanakah Saya Boleh Mencari Sifat C# yang Dihiasi dengan Atribut Khusus (AllowMultiple = palsu) dengan Cekap?

Barbara Streisand
Lepaskan: 2024-12-28 02:28:09
asal
963 orang telah melayarinya

How Can I Efficiently Find C# Properties Decorated with a Specific Attribute (AllowMultiple = false)?

Mengoptimumkan Carian Atribut dalam C# Properties

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)));
Salin selepas log masuk

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!

sumber:php.cn
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