Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membaca Atribut Kelas pada Runtime dalam C#?

Bagaimanakah Saya Boleh Membaca Atribut Kelas pada Runtime dalam C#?

Linda Hamilton
Linda Hamiltonasal
2025-01-12 08:55:42358semak imbas

How Can I Read Class Attributes at Runtime in C#?

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!

Kenyataan:
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