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

Framework .NET Discussion :

Propriété lié à une enum


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Par défaut Propriété lié à une enum
    Salut
    J'ai une énumération.
    Je souhaiterais lié des strings pour type de mon enum.

    Comment faire ?
    - Dois-je crée une fonction de mon enum retourne un objet qui a des propriétés qui se remplissent en fonction de mon enum ?

    - Un système d'attribut ?

    - Autre ?

    Merci.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Pour associer une chaine à chaque valeur de l'enum, tu peux utiliser l'attribut Description :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    using System.ComponentModel;
    ...
     
    public enum MyEnum
    {
        [Description("Description de Titi")]
        Titi,
        [Description("Description de Tata")]
        Tata,
        [Description("Description de Toto")]
        Toto
    }
    Pour récupérer l'attribut facilement, tu peux utiliser la méthode d'extension GetDescription qui est dans la lib Dvp.NET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    using Developpez.Dotnet;
     
    ...
     
    MyEnum x = MyEnum.Toto;
    ...
    string description = x.GetDescription();

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Par défaut
    J ai besoin de deux string. Et je pense par la suite mettre un bool.
    Dois-je modifier la librairie pour avoir ce que je veux ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Oberown Voir le message
    J ai besoin de deux string. Et je pense par la suite mettre un bool.
    Dans ce cas, crée un attribut avec toutes les infos que tu veux

    Citation Envoyé par Oberown Voir le message
    Dois-je modifier la librairie pour avoir ce que je veux ?
    Non, crée plutôt une méthode extension spécifique. En gros ça va donner un truc comme ça (en supposant que ton attribut s'appelle MyAttribute)

    Code : 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
        public static MyAttribute GetMyAttribute(this Enum value)
        {
            Type type = value.GetType();
            string name = Enum.GetName(type, value);
            if (name != null)
            {
                FieldInfo field = type.GetField(name);
                if (field != null)
                {
                    MyAttribute attr = 
                           Attribute.GetCustomAttribute(field, 
                             typeof(MyAttribute)) as MyAttribute;
                    if (attr != null)
                        return attr;
                }
            }
            return null;
        }

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Je n'avais jamais pensé que Enum pouvait être utilisé comme classe de base d'un enum; honte à moi

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Par défaut
    Est-il possible dans mon attribut de mettre en paramètre des constantes ou des variables ?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/01/2013, 10h44
  2. Réponses: 7
    Dernier message: 15/09/2009, 15h54
  3. Réponses: 4
    Dernier message: 12/12/2008, 13h01
  4. [C#] Conserver des valeurs de propriétés d'une page
    Par elod38 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/03/2005, 10h53
  5. Réponses: 4
    Dernier message: 29/11/2004, 16h51

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