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 :

créer dynamiquement un enum de string (ou "enum-like") ?


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut créer dynamiquement un enum de string (ou "enum-like") ?
    Bonjour,
    Sous Excel, j'ai une colonne avec la liste des éléments de cet enum (qui peuvent contenir des espaces).
    Je voudrais créer dynamiquement cet enum (ou une class dont je pourrais me servir de la même manière qu'un enum) dans mon application.
    Si par exemple, j'ai un élément qui s'appelle "Toto / Tata titi", il faudrait que la valeur de cette élément soit bien "Toto / Tata titi" (avec les espaces et/ou les symboles).
    Pouvez-vous m'aider ou me pointer vers un exemple de cela s'il vous plaît?
    D'avance merci,

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Les enums ne permettent pas d'avoir une valeur de type de string. Dans ton cas, le plus simple c'est d'utiliser un Dictionary<string, string>.

    Mais comme je l'ai indiqué, une enum ne peut avoir une valeur de type string. Il faut donc mettre cette valeur ailleurs, comme par exemple dans l'attribut Description. Dans ton cas il faudra donc également utiliser la reflection pour générer cet attribut automatiquement. Une fois que tu as combiné tout ca, tu peux utiliser la méthode d'extension pour récupérer l'enum et sa valeur de type string. Cette solution est coûteuse en terme de performance, puisqu'on utilise de la reflection, et va apporter de la complexité à ton projet pour au final pas grand chose...

    Le mieux reste la solution du Dictionary, car tu peux l'utiliser tel quel, tout simplement.

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    Merci je vais regarder ça.
    Le problème du dictionnary, c'est que pour appeler ma valeur, je devrais faire un appel du genre MyEnumAsDictionnary["Toto/TataTiti"]. Et à la compilation je ne suis pas assuré que "Toto/TataTiti" existe bien..
    Je me retrouve du coup avec un peu le même problème qu'aujourd'hui, où je fais mes tests en dur (ce dont je veux me débarrasser car je fais les mêmes tests à plusieurs endroits et réutiliser les des données de références "à la main" comme ça est sujet à des erreurs d'espace/majuscule/typo) du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string type = "blablalba";
    if (type == "Toto / Tata titi")

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Sinon tu peux aussi regarder du côté des templates T4. C'est assez puissant et ca permet de générer du code automatiquement à partir d'un template lui-même écrit en C#. Tu trouveras plein d'exemples sur le net, en voici un qui devrait te convenir : Using T4 Templates to generate custom strongly-typed code in Visual Studio

Discussions similaires

  1. Créer dynamiquement un fichier XML
    Par sigap dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 26/07/2005, 12h53
  2. est il possible de créer dynamiquement une class ???
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 12/07/2005, 16h22
  3. [MFC] Créer dynamiquement une classe
    Par vanitom dans le forum MFC
    Réponses: 9
    Dernier message: 11/12/2004, 13h23
  4. Réponses: 4
    Dernier message: 13/05/2004, 13h15

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