"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je récupérer dynamiquement les valeurs d'attribut à partir d'une classe lors de l'exécution?

Comment puis-je récupérer dynamiquement les valeurs d'attribut à partir d'une classe lors de l'exécution?

Publié le 2025-02-07
Parcourir:379

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

Attributs de recherche d'exécution

Cet article présente une méthode générale pour accéder à dynamiquement et extraire les valeurs de propriété d'une classe.

Utilisez la méthode spéciale

Définissez une méthode commune qui accepte les paramètres de type:

public string GetDomainName()

à l'intérieur de la méthode:

  • utilisez typeof (t) .getCustomAttributes pour récupérer les attributs personnalisés:

      var dnAttribute = typeof(T).GetCustomAttributes(
        typeof(DomainNameAttribute), true
      ).FirstOrDefault() as DomainNameAttribute;
  • Si la propriété existe, sa valeur est renvoyée:
  • if (dnattribute! = null) { return dnattribute.name; }
      if (dnAttribute != null)
      {
        return dnAttribute.Name;
      }
  • Sinon, renvoie null:
  • return null;
      return null;
  • méthode d'extension utilitaire

pour une applicabilité plus large, généralisez cette méthode pour gérer n'importe quel attribut:

Classe statique publique AttributeExtensions { public static tvalue getAttributeValue ( Ce type de type, Func valector-elector) où tattribute: attribut }
public static class AttributeExtensions
{
    public static TValue GetAttributeValue(
        this Type type, 
        Func valueSelector) 
        where TAttribute : Attribute
}

    Récupérer les propriétés personnalisées:
  • var att = type.getCustomAttributes ( typeof (tattribute), vrai .
      var att = type.GetCustomAttributes(
        typeof(TAttribute), true
      ).FirstOrDefault() as TAttribute;
  • pour extraire la valeur requise:
  • ]

    if (att! = null) { RETOUR VALEURSELLECTEUR (ATT); }

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

    ]
      return default(TValue);
récupérer

DomainName

attribut de
    myClass
  • : string name = typeof (myClass) .getDomainName ();
string name = typeof(MyClass).GetDomainName();
en utilisant la méthode d'extension:
  • string name = typeof (myClass) .GetAttributeValue ((DomainNameAtTribute DNA) => dna.name);
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3