IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#2\Introspection]Lister la liste des variables membres


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut [C#2\Introspection]Lister la liste des variables membres
    Bonjour à tous,

    J'avais déjà utilisé la réflexion auparavant mais je ne me rappelle plus comment faire (J'aimerais obtenir la liste des valeurs des variables membres)

    J'aimerai également savoir si c'est possible d'attribuer une "propriété" à mes variables membres et obtenir cette propriété lors de la réflexion?
    ex:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [MaPropriété(10)]
    private int _MaValeur;

    Merci d'avance,
    Nicolas

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par NicolasJolet
    J'aimerai également savoir si c'est possible d'attribuer une "propriété" à mes variables membres et obtenir cette propriété lors de la réflexion?
    ex:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [MaPropriété(10)]
    private int _MaValeur;
    C'est plutôt d'attribut que tu veux dire, par propriété

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Oui c'était le mot que je cherchais

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Points : 286
    Points
    286
    Par défaut
    Il me semble avoir trouvé la solution.
    C'est peut-être banal mais je la donne quand même, ça peut peut-être servir :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    /// <summary>
    /// Créer une classe qui servira d'attribut
    /// </summary>
    [global::System.AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
    public sealed class MyAttributeAttribute : Attribute
    {
        readonly string _UneValeur;
     
        public MyAttributeAttribute(string UneValeur)
        {
            this._UneValeur = UneValeur;      
        }
     
        public string UneValeur
        {
            get { return this._UneValeur; }
        }
    }
     
     
    public class UneClasse
    {      
        private string _name = "bonjour";
     
        [MyAttribute("coucou")]
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
     
        public void fonction()
        {
            // Parcourir les différentes propriétés qui composent l'objet
            PropertyInfo[] tabPi = this.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
            foreach (PropertyInfo pi in tabPi)
            {
                object[] tabAttribute = pi.GetCustomAttributes(typeof(MyAttributeAttribute), false);
                if (tabAttribute.Length > 0)    // Si l'attribut a été défini
                {
                    MyAttributeAttribute va = (MyAttributeAttribute)tabAttribute[0];
                    object value = pi.GetValue(this, null);  // Retourne "bonjour" 
                    string attValue = va.UneValeur;   // Retourne "coucou"
                }
            }                        
        }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/02/2008, 13h50
  2. Liste des variables.
    Par defacta dans le forum Langage
    Réponses: 1
    Dernier message: 13/09/2007, 12h59
  3. comment lister la liste des balises d'un flux
    Par fred666 dans le forum APIs
    Réponses: 4
    Dernier message: 15/06/2007, 10h43
  4. [Sécurité] $_ENV => Liste des variables liées
    Par Romanops dans le forum Langage
    Réponses: 8
    Dernier message: 17/04/2007, 15h07
  5. [POO] Liste des variables de mon Objet
    Par hisy dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2006, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo