Heim >Backend-Entwicklung >C++ >Wie lese ich Attributwerte in C# zur Laufzeit dynamisch?
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!