Mengakses Atribut Kelas Secara Dinamik dalam C#
Mengakses atribut kelas pada masa jalan ialah teknik yang berkuasa untuk mendapatkan semula metadata atau maklumat konfigurasi secara dinamik. Ini boleh dicapai menggunakan keupayaan pantulan C#.
Mendapatkan Atribut Khusus (DomainNameAttribute):
Kaedah generik, GetDomainName<T>
, memudahkan mendapatkan DomainNameAttribute
daripada mana-mana kelas:
<code class="language-csharp">public string GetDomainName<T>() { var dnAttribute = typeof(T).GetCustomAttributes(typeof(DomainNameAttribute), true) .FirstOrDefault() as DomainNameAttribute; return dnAttribute?.Name; }</code>
Contoh penggunaan:
<code class="language-csharp">// Returns "MyTable" (assuming myclass has the attribute) string domainName = GetDomainName<myclass>();</code>
Pendekatan Lebih Umum untuk Akses Atribut:
Untuk kebolehgunaan yang lebih luas, kaedah lanjutan yang lebih umum membenarkan pengambilan semula mana-mana jenis atribut dan sifat khususnya:
<code class="language-csharp">public static class AttributeExtensions { public static TValue GetAttributeValue<TAttribute, TValue>( this Type type, Func<TAttribute, TValue> valueSelector) where TAttribute : Attribute { var attribute = type.GetCustomAttributes(typeof(TAttribute), true) .FirstOrDefault() as TAttribute; return attribute != null ? valueSelector(attribute) : default(TValue); } }</code>
Contoh penggunaan:
<code class="language-csharp">string name = typeof(MyClass).GetAttributeValue((DomainNameAttribute dna) => dna.Name);</code>
Kaedah ini mengambil jenis atribut dan ungkapan lambda untuk memilih nilai sifat yang diingini daripada tika atribut. Ini memberikan fleksibiliti untuk mengakses pelbagai sifat atribut.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Atribut Kelas pada Runtime dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!