3 votes

Affichage / Récupération d'attributs

À l'intérieur d'une classe, j'ai le morceau de code suivant :

/// 
[System.Xml.Serialization.XmlElementAttribute("Errors", typeof(ErrorsType))]
[System.Xml.Serialization.XmlElementAttribute("Success", typeof(SuccessType))]
[System.Xml.Serialization.XmlElementAttribute("Warnings", typeof(WarningsType))]
public object[] Items {
    get {
        return this.itemsField;
    }
    set {
        this.itemsField = value;
    }
}

En utilisant uniquement la réflexion, est-il possible de récupérer ces attributs ? J'ai vu 'GetCustomAttributes() sur le Type respectif, mais je n'ai pas eu grand succès.

4voto

Andre Loker Points 4336

Vous devez récupérer les attributs de la propriété, pas le type lui-même, comme ceci:

typeof(MyClass).GetProperty("Items").GetCustomAttributes(typeof(XmlElementAttribute), false);

Ou plus complet (n'oubliez pas d'importer System.Linq pour que Cast<> et ToArray() fonctionnent):

XmlElementAttribute[] attributs = typeof(TheType)
                  .GetProperty("Items")
                  .GetCustomAttributes(typeof(XmlElementAttribute), false)
                  .Cast()
                  .ToArray();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X