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

Wie kann ich Klassenattribute zur Laufzeit in C# lesen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-12 08:55:42360Durchsuche

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:

<code class="language-csharp">public string GetDomainName<T>()
{
    var dnAttribute = typeof(T).GetCustomAttributes(typeof(DomainNameAttribute), true)
                               .FirstOrDefault() as DomainNameAttribute;
    return dnAttribute?.Name;
}</code>

Anwendungsbeispiel:

<code class="language-csharp">// Returns "MyTable" (assuming myclass has the attribute)
string domainName = GetDomainName<myclass>();</code>

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:

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

Anwendungsbeispiel:

<code class="language-csharp">string name = typeof(MyClass).GetAttributeValue((DomainNameAttribute dna) => dna.Name);</code>

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!

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