„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich Attributwerte dynamisch von einer Klasse zur Laufzeit abrufen?

Wie kann ich Attributwerte dynamisch von einer Klasse zur Laufzeit abrufen?

Gepostet am 2025-02-07
Durchsuche:230

How Can I Dynamically Retrieve Attribute Values from a Class at Runtime?

Laufzeitsuche Attribute

In diesem Artikel wird eine allgemeine Methode zum dynamischen Zugriff auf und extrahieren von Eigenschaftswerten einer Klasse eingeführt.

Verwenden Sie eine spezielle Methode

Definieren Sie eine gemeinsame Methode, die Typparameter akzeptiert:

public string GetDomainName()
]

In der Methode:

  • verwenden typeof (t) .getCustomatTributes , um benutzerdefinierte Attribute abzurufen:

      var dnAttribute = typeof(T).GetCustomAttributes(
        typeof(DomainNameAttribute), true
      ).FirstOrDefault() as DomainNameAttribute;
  • Wenn die Eigenschaft existiert, wird ihr Wert zurückgegeben:
  • if (dnattribute! = null) { return dnattribute.name; }
      if (dnAttribute != null)
      {
        return dnAttribute.Name;
      }
  • ansonsten return null:
  • return null;
      return null;
  • Utility -Erweiterungsmethode

Verallgemeinern Sie diese Methode für die breitere Anwendbarkeit, um jedes Attribut zu behandeln:

public statische Klasse AttributeExteesions { öffentliches statisches TValue GetattributeValue ( Dieser Typtyp, Func valusector) Wo TatTribute: Attribut }
public static class AttributeExtensions
{
    public static TValue GetAttributeValue(
        this Type type, 
        Func valueSelector) 
        where TAttribute : Attribute
}

    benutzerdefinierte Eigenschaften abrufen:
  • var att = type.getCustomatTributes ( typeof (tattribute), true ).
      var att = type.GetCustomAttributes(
        typeof(TAttribute), true
      ).FirstOrDefault() as TAttribute;
    valulector
  • , um den erforderlichen Wert zu extrahieren:
  • ]

    if (att! = null) { Rückgabevalientelektor (ATT); }

      if (att != null)
      {
        return valueSelector(att);
      }
  • return default (tvalue);

    ]]
      return default(TValue);
abrufen

domainname

Attribut von
    myclass
  • : string name = typeof (myclass) .getDomAinName ();
string name = typeof(MyClass).GetDomainName();
mit der Erweiterungsmethode:
  • string name = typeof (myclass) .GetAtTributeValue ((DomainnAmeattribute DNA) => DNA.Name);
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3