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 :

Sous énumération ou type similaire


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut Sous énumération ou type similaire
    Bonjour à tous,

    Je cherche un moyen de mimer le comportement d'une sous-énumération en C#, ou plus exactement d'une énumération hiérarchique.

    Pour exposer simplement le problème, imaginons que j'ai une enum comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public enum fooEnum : int
    {
         fooA,
         fooB,
    }
    Maintenant j'aimerais ajouter une (ou des) contrainte(s) supplémentaire(s) :

    fooA ne peut être composé que de : fooA1 et fooA2, tandis que fooB ne peut être composé que de fooBx et fooBy. (toutes ces sous-valeurs étant entières elles aussi).

    Dans une méthode quelconque, je pourrais tester les "sous-valeurs" de fooA et fooB comme ceci :

    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
    19
     
    if (valueTest == fooEnum.fooA.fooA1)
    // ...
     
    //autre possibilité de test
    switch(valueTest2)
    {
         case fooEnum.fooB.fooBx:
          // ...
         break;
     
         case fooEnum.fooB.fooBy:
          // ...
         break;
     
         default:
           //...
         break;
    }
    Le problème c'est que ne sais absolument pas comment modéliser cela simplement, c-a-d sans un système (assez) "lourd" à base d'héritage et de valeurs entières constantes (sachant que je ne ferais rien d'autre avec ces valeurs que les tester).

    Est-ce la seule option, ou existe-il une autre possibilité ?

    Je vous remercie

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Pourquoi ne pas simplement utiliser un namespace ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    namespace XXX.fooEnum
    {
        public enum fooA
        {
            fooA1,
            fooA2
        }
        public enum fooB
        {
            fooB1,
            fooB2
        }
    }

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/10/2008, 18h25
  2. [D6] Lire sous D6 le type (char **) d'une DLL en C++
    Par nikoko34 dans le forum Langage
    Réponses: 6
    Dernier message: 10/10/2008, 17h14
  3. Ligne blanche sous IE frm type hidden
    Par bossLINDROS dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/05/2007, 14h51
  4. Projet OpenGl sous visual - Quel type de projet?
    Par starkson dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 26/02/2007, 13h07
  5. sous menus de type Folder
    Par malmzi2007 dans le forum Zope
    Réponses: 3
    Dernier message: 23/08/2006, 15h14

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