Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

2 février 2014 7 02 /02 /février /2014 01:02

La classe de l’attribut personnalisé hérite de System.Attribute

exemple

 

// l'attribut personnalisé pourra être appliqué aux propriétés

    [AttributeUsage(AttributeTargets.Property)]

    public class MyAttribute : Attribute

    {

        private int _index;

        private string _myText;

 

        public int index

        {

            get { return _index; }

        }

        public string myText

        {

            get { return _myText; }

        }

 

        public MyAttribute(int index,string myText)

        {

            _index = index;

            _myText = myText;

        }

    }

 

Utilisation

       [MyAttribute(1,"Mon texte")]

        public string contactName

        {

            get { return _contactName; }

            set { _contactName = value; }

        }

 

Après il faut récupèrer ses attributs pour pouvoir les utiliser

Exemple dans MainForm.cs

(ne pas oublier using System.ComponentModel; et les éventuelles références à une bibliothèque de classe)

  private void GetMyAttributes()

        {                    

            string[] result = null;

 

            Type genericType = typeof(Contact);

 

            List<PropertyDescriptor> properties = new List<PropertyDescriptor>();

            // parcours de chaque propriété de notre classe Contact(c'est à dire contactId,puis contactName,etc.) , si l'attribut personnalisé est présent, on ajoute la propriété

            foreach (PropertyDescriptor propertyDescriptor in TypeDescriptor.GetProperties(genericType))

                if (propertyDescriptor.Attributes[typeof(MyAttribute)] != null)

                    properties.Add(propertyDescriptor);

           

            // S'il y a des propriétés à afficher

            if (properties.Count > 0)

            {

              

                result = new string[properties.Count];

 

                int counter = 0;

                foreach (PropertyDescriptor propertyDescriptor in properties)

                {

                    // On récupère les valeurs de notre attribut personnalisé

                    MyAttribute myAttribute = (propertyDescriptor.Attributes[typeof(MyAttribute)] as MyAttribute);

 

                    // ici j'utilise un tableau mais on pourrait utiliser les valeurs obtenues comme désiré

                    result[counter++] = string.Concat(myAttribute.index.ToString(), " - ", myAttribute.myText);

                }

            }

 

         

        }

 

Partager cet article

Repost 0
Published by Romagny13 - dans C
commenter cet article

commentaires