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

Windows Forms Discussion :

création de type enum en runtime


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut création de type enum en runtime
    Bonjours à tous
    je veux créer des type enum dynamiquement à partie d'un fichier xml au moment de la compilation pour les utiliser
    Est ce que quelqu'un peut m'aider
    Merci d'avance

  2. #2
    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
    Au moment de la compilation, je ne vois pas bien (de plus c'est contradictoire avec ton titre, où tu parles de runtime, pas de compiletime).

    Au moment de l'exécution c'est possible avec le code DOM.

    ceci dit tu peux faire un utilitaire utilisant le code DOM qui sera lancé au moment de la compilation. (à l'aide des propriétés Custom Tools et tutti quanti).

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Je veux bien dire au moment de l'execution puisque j'ai pas une visibilité sur mon xml le fichier xml

  4. #4
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Pour quoi tu ne construits pas simplement une liste de String que tu charges via ton fichier xml ?
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  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
    A tout hasard, voici un exemple de génération d'enum à partir d'une liste de valeurs : (génération du source et génération de l'assembly in-memory).

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    private static string generateEnum(string[] MyVals )
    {
    StringBuilder sbCodeSource = new StringBuilder();
    StringWriter sw = new StringWriter(sbCodeSource);
    CompilerParameters compilerParameters = new CompilerParameters();
    compilerParameters.GenerateExecutable = false;
    compilerParameters.GenerateInMemory = true; 
    compilerParameters.IncludeDebugInformation = false;
    compilerParameters.WarningLevel = 1;
    // Invoke compilation.
    CodeDomProvider provider = CodeDomProvider.CreateProvider( "C#" );
    CodeNamespace myNs = new CodeNamespace("MyNameSpace");
    CodeCompileUnit compileUnit = new CodeCompileUnit();
    compileUnit.Namespaces.Add(myNs);
    CodeTypeDeclaration enumDeclaration = new CodeTypeDeclaration("MyEnum");
    enumDeclaration.IsEnum = true;
    enumDeclaration.Attributes = MemberAttributes.Public;
    myNs.Types.Add(enumDeclaration);
     
    foreach (string val in MyVals)
    {
    CodeMemberField enumField = new CodeMemberField();
    enumField.Name = val;
    enumDeclaration.Members.Add(enumField);
    }
     
    provider.GenerateCodeFromCompileUnit(compileUnit, sw, null);
    CompilerResults compilerResults = provider.CompileAssemblyFromDom(compilerParameters, compileUnit);
     
    if(compilerResults.Errors.Count == 0)
    {
    return sbCodeSource.ToString();
    }
    return null;
    }

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    mainteneant comment je peux utiliser ce nouveau type généré d'habitude si c'est un type connu string par exemple je met typeof(System.String)
    maintenant queceque je vais mettre

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

Discussions similaires

  1. ENUM et création de types
    Par Heavy Metal Hero dans le forum SQLite
    Réponses: 1
    Dernier message: 25/11/2013, 13h53
  2. création d'un champ de type enum
    Par hanadi_09 dans le forum Débuter
    Réponses: 1
    Dernier message: 29/08/2010, 04h52
  3. Création Type Enum
    Par rvzip64 dans le forum Langage
    Réponses: 2
    Dernier message: 09/06/2009, 11h44
  4. [VB.NET] Variable de type enum avec du string
    Par Mouse dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/01/2005, 18h22
  5. [MySQL] Valeur par défaut d'un type ENUM
    Par aliasjcdenton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/10/2004, 20h44

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