Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Kembali Hartanah dengan Atribut Tersuai dengan Cekap dalam .NET?
Mendapatkan semula Hartanah dengan Atribut Tersuai: Pendekatan Cekap
Apabila bekerja dengan refleksi dalam .NET, selalunya perlu untuk introspeksi jenis dan ahlinya untuk mengakses maklumat tertentu. Senario biasa melibatkan mendapatkan senarai sifat yang ditandakan dengan atribut tersuai tertentu. Tugas ini boleh dicapai menggunakan kaedah GetCustomAttributes(), tetapi kaedah yang lebih cekap dan ringkas wujud.
Pertimbangkan coretan kod berikut, yang bertujuan untuk mendapatkan semula sifat dengan atribut MyAttribute:
foreach (PropertyInfo prop in t.GetProperties()) { object[] attributes = prop.GetCustomAttributes(typeof(MyAttribute), true); if (attributes.Length == 1) { //Property with my custom attribute } }
Walaupun pendekatan ini berfungsi dengan betul, pendekatan ini mengalami instantiasi objek yang tidak diperlukan. Kaedah GetCustomAttributes() mengembalikan tatasusunan kejadian atribut, yang memerlukan peruntukan memori tambahan dan overhed.
Untuk mengoptimumkan kod ini, kami boleh memanfaatkan kaedah Where() dan kaedah Attribute.IsDefined(), seperti yang ditunjukkan di bawah:
var props = t.GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(MyAttribute)));
Coretan kod yang disemak ini dengan ketara meningkatkan kecekapan dengan menggunakan Attribute.IsDefined() untuk mengesahkan kehadiran atribut tanpa membuat instantiating objek atribut. Kaedah Where() menapis koleksi sifat, mengembalikan hanya yang memenuhi predikat yang ditentukan.
Pendekatan ini bukan sahaja memperkemas kod tetapi juga meminimumkan penggunaan memori dengan mengelakkan penciptaan objek yang tidak perlu. Ia menyediakan penyelesaian yang lebih cekap dan elegan untuk mendapatkan semula sifat yang ditandai dengan atribut tersuai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Kembali Hartanah dengan Atribut Tersuai dengan Cekap dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!