4 votes

Décoration de l'attribut DataType grâce à Reflection

Supposons ce scénario

public class CustomerMetaData
{

    [DataType(DataType.EmailAddress)]       
    public String EmailAddress {get;set;}

    [DataType(DataType.Url)]       
    public String UrlUser {get;set;}

}

J'ai besoin de passer par réflexion DataType de toutes les propriétés de cette classe, mais après une recherche approfondie sur le web, je n'ai pas trouvé de solution pour ce type de DataAttribute.

J'explique un peu plus, je n'ai pas besoin de connaître le type de données de la propriété (par exemple, String, Boole....), j'ai besoin de la partie de l'attribut [DataType(DataType.....)].

Merci d'avance.

Une idée ?

5voto

Ann L. Points 7456

Vous avez besoin de la méthode GetCustomAttributes.

C'est de mémoire, mais ça donnerait quelque chose comme ça :

PropertyInfo[] props = typeof(CustomerMetaData).GetProperties();
foreach(PropertyInfo p in props)
{
    object[] attribs = p.GetCustomAttributes(false);
    // do something with the attributes
}

Consultez les méthodes GetProperties et GetCustomAttributes pour vous assurer des paramètres : si certaines de vos propriétés ne sont pas publiques, vous devrez spécifier des informations supplémentaires pour obtenir des informations les concernant.

0voto

TheRoyalWe Points 1

Après y avoir pensé pendant 5 ans...

PropertyInfo[] props = typeof(CustomerMetaData).GetProperties();
foreach(PropertyInfo p in props)
{
    IEnumerable<DataTypeAttibute> dataTypeAttrs = p.GetCustomAttributes<DataTypeAttribute>(false);
    foreach(var attr in dataTypeAttrs)
    {
        DataType dataType = attr.DataType;
        // do something with the datatype
    }
}

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