Mencari Sifat dengan Atribut Khusus Menggunakan Refleksi
Atribut tersuai ialah alat yang berkuasa untuk menganotasi jenis dan ahli dalam kod .NET. Ia menjadi perlu untuk mendapatkan maklumat tentang atribut ini secara pemrograman pada masa-masa tertentu. Soalan ini memfokuskan pada mendapatkan semula senarai sifat awam yang dikaitkan dengan atribut tersuai khusus yang dipanggil MyAttribute, yang mempunyai sifat AllowMultiple yang ditetapkan kepada palsu.
Kod yang disediakan menggunakan gelung untuk mengulangi sifat jenis tersebut. dan menyemak kehadiran atribut tersuai menggunakan GetCustomAttributes(). Walaupun pendekatan ini berfungsi, ia melibatkan contoh atribut terwujud, yang disertakan dengan kos prestasi.
Pendekatan yang lebih cekap ialah menggunakan kaedah sambungan Where() pada koleksi GetProperties(), seperti yang ditunjukkan dalam yang diberikan jawapan:
var props = t.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
Kod ini memanfaatkan kaedah Attribute.IsDefined(), yang menyemak kewujudan jenis atribut tertentu pada ahli tanpa mencipta sebarang atribut contoh. Ungkapan lambda memastikan bahawa hanya sifat dengan MyAttribute dipilih ke dalam pembolehubah props.
Menggunakan pendekatan ini mengelakkan overhed yang dikaitkan dengan kejadian atribut terwujud, menghasilkan penyelesaian yang lebih ringan dan berprestasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Harta Awam dengan Cekap dengan Atribut Tersuai Khusus dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!