Heim > Backend-Entwicklung > C++ > Wie kann ich Klassenattribute zur Laufzeit in C# lesen?

Wie kann ich Klassenattribute zur Laufzeit in C# lesen?

Linda Hamilton
Freigeben: 2025-01-12 08:55:42
Original
411 Leute haben es durchsucht

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

Dynamischer Zugriff auf Klassenattribute in C#

Der Zugriff auf Klassenattribute zur Laufzeit ist eine leistungsstarke Technik zum dynamischen Abrufen von Metadaten oder Konfigurationsinformationen. Dies kann mithilfe der Reflexionsfunktionen von C# erreicht werden.

Abrufen eines bestimmten Attributs (DomainNameAttribute):

Eine generische Methode GetDomainName<T> vereinfacht das Abrufen eines DomainNameAttribute aus jeder Klasse:

public string GetDomainName<T>()
{
    var dnAttribute = typeof(T).GetCustomAttributes(typeof(DomainNameAttribute), true)
                               .FirstOrDefault() as DomainNameAttribute;
    return dnAttribute?.Name;
}
Nach dem Login kopieren

Anwendungsbeispiel:

// Returns "MyTable" (assuming myclass has the attribute)
string domainName = GetDomainName<myclass>();
Nach dem Login kopieren

Ein allgemeinerer Ansatz für den Attributzugriff:

Für eine breitere Anwendbarkeit ermöglicht eine allgemeinere Erweiterungsmethode das Abrufen jedes Attributtyps und seiner spezifischen Eigenschaft:

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);
    }
}
Nach dem Login kopieren

Anwendungsbeispiel:

string name = typeof(MyClass).GetAttributeValue((DomainNameAttribute dna) => dna.Name);
Nach dem Login kopieren

Diese Methode verwendet den Attributtyp und einen Lambda-Ausdruck, um den gewünschten Eigenschaftswert aus der Attributinstanz auszuwählen. Dies bietet Flexibilität für den Zugriff auf verschiedene Attributeigenschaften.

Das obige ist der detaillierte Inhalt vonWie kann ich Klassenattribute zur Laufzeit in C# lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage