Heim >Backend-Entwicklung >C++ >Wie lese ich Attributwerte in C# zur Laufzeit dynamisch?

Wie lese ich Attributwerte in C# zur Laufzeit dynamisch?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-12 06:01:43407Durchsuche

How to Dynamically Read Attribute Values in C# at Runtime?

Attributwerte zur Laufzeit dynamisch lesen

In der Softwareentwicklung kommt es häufig vor, dass Sie dynamisch auf Eigenschaften zugreifen müssen, die einer Klasse oder einem Objekt zugeordnet sind. Diese Fähigkeit ist für verschiedene Szenarien wie Reflektion, Konfigurationsabruf und dynamische Codegenerierung von entscheidender Bedeutung.

In diesem Artikel wird untersucht, wie der dynamische Attributabruf in C# implementiert wird, und es werden zwei verschiedene Methoden demonstriert:

1. Benutzerdefinierte Methoden für bestimmte Attributtypen:

Um den Attributwert eines bestimmten Attributtyps, wie zum Beispiel des Attributs DomainName, zu lesen, können Sie eine benutzerdefinierte Methode wie diese definieren:

public string GetDomainName<T>()
{
    var dnAttribute = typeof(T).GetCustomAttributes(
        typeof(DomainNameAttribute), true
    ).FirstOrDefault() as DomainNameAttribute;
    if (dnAttribute != null)
    {
        return dnAttribute.Name;
    }
    return null;
}

2. Generische Erweiterungsmethoden für jeden Eigenschaftstyp:

Um den Eigenschaftsabrufprozess allgemein zu gestalten und jeden Eigenschaftstyp zu unterstützen, können Sie die folgende generische Erweiterungsmethode erstellen:

public static class AttributeExtensions
{
    public static TValue GetAttributeValue<TAttribute, TValue>(
        this Type type,
        Func<TAttribute, TValue> valueSelector)
        where TAttribute : Attribute
    {
        var att = type.GetCustomAttributes(
            typeof(TAttribute), true
        ).FirstOrDefault() as TAttribute;
        if (att != null)
        {
            return valueSelector(att);
        }
        return default(TValue);
    }
}

Verwendung:

Mit beiden Methoden können Sie den Attributwert DomainName zur Laufzeit abrufen, etwa so:

// 使用自定义方法
string domainNameValue = GetDomainName<MyClass>();

// 使用扩展方法
string name = typeof(MyClass)
    .GetAttributeValue((DomainNameAttribute dna) => dna.Name);

Das obige ist der detaillierte Inhalt vonWie lese ich Attributwerte in C# zur Laufzeit dynamisch?. 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