


Wie kann ich Attributwerte zur Laufzeit dynamisch aus einer Klasse abrufen?
Jan 12, 2025 am 06:04 AMEigenschaften zur Laufzeit abrufen
In diesem Artikel wird eine allgemeine Methode zum dynamischen Zugreifen auf und Extrahieren von Attributwerten einer Klasse vorgestellt.
Verwenden Sie spezielle Methoden
Definieren Sie eine generische Methode, die Typparameter akzeptiert:
public string GetDomainName<T>()
Interne Methode:
-
Verwenden Sie
typeof(T).GetCustomAttributes
, um benutzerdefinierte Eigenschaften abzurufen:var dnAttribute = typeof(T).GetCustomAttributes( typeof(DomainNameAttribute), true ).FirstOrDefault() as DomainNameAttribute;
Nach dem Login kopieren -
Wenn das Attribut vorhanden ist, geben Sie seinen Wert zurück:
if (dnAttribute != null) { return dnAttribute.Name; }
Nach dem Login kopieren -
Andernfalls null zurückgeben:
return null;
Nach dem Login kopieren
Utility-Erweiterungsmethoden
Für eine breitere Anwendbarkeit verallgemeinern Sie diese Methode, um jedes Attribut zu verarbeiten:
public static class AttributeExtensions { public static TValue GetAttributeValue<TAttribute, TValue>( this Type type, Func<TAttribute, TValue> valueSelector) where TAttribute : Attribute }
Interne Erweiterungsmethode:
-
Benutzerdefinierte Attribute abrufen:
var att = type.GetCustomAttributes( typeof(TAttribute), true ).FirstOrDefault() as TAttribute;
Nach dem Login kopieren -
Wenn das Attribut vorhanden ist, verwenden Sie das bereitgestellte
valueSelector
, um den erforderlichen Wert zu extrahieren:if (att != null) { return valueSelector(att); }
Nach dem Login kopieren -
Andernfalls wird der Standardwert des Typs zurückgegeben:
return default(TValue);
Nach dem Login kopieren
Anwendungsbeispiele
- Rufen Sie das
MyClass
-Attribut vonDomainName
ab:
string name = typeof(MyClass).GetDomainName<MyClass>();
- Rufen Sie jeden Attributwert von
MyClass
mithilfe der Erweiterungsmethoden ab:
string name = typeof(MyClass) .GetAttributeValue<DomainNameAttribute, string>((DomainNameAttribute dna) => dna.Name);
Das obige ist der detaillierte Inhalt vonWie kann ich Attributwerte zur Laufzeit dynamisch aus einer Klasse abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

GULC: C -Bibliothek von Grund auf neu gebaut

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

eindeutiger Gebrauch und Phrasenfreigabe

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?
