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
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
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).
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Je veux bien dire au moment de l'execution puisque j'ai pas une visibilité sur mon xml le fichier xml
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.
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; }
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
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
Rien compris ...
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
d'habitude si j'ai un type enum static je l'appelle simplement par son nom et
à ce que j'ai compri la méthode generateEnum va créer un nouveu type Enum
comment je vais l'appeler ?
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
oui je l'ai lu mais le probléme que le type MyEnum est inconnue (il ne le connait pas encore)
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
connaitre statiquement !!!
Beh, j'ai l'impression que la question est la suivante :
J'ai un type Toto... et je voudrais le renseigner dynamiquement mais pouvoir l'utiliser "statiquement".. ce qui est un paradoxe total
J'vois pas trop l'interet d'avoir un enum en dynamique sauf si c pour génerer du code derrière et encore....
J'ai du mal à expliquer dans quelle situation "courante" ou pas on peut avoir recours à ce genre de mécanisme.. Autant passer par des chaines de caractères à ce moment là...
Comprends pas trop la finalité, désolé
The Monz, Toulouse
Expertise dans la logistique et le développement pour
plateforme .Net (Windows, Windows CE, Android)
J'ai précisément un cas où j'y ai recours : en gros, j'ai besoin de proposer un choix a design-time sur une propriétés d'un contrôle, matérialisée par un enum, dont le contenu dépend d'info externes; bien sur je ne génére pas la source; j'ai rajouté la ligne entrainant la génération de source dans l'exemple uniquement pour des raisons didactiques.
(du fait que j'avais le code sous la main, j'ai pu rapidement expurger mon code pour lui proposer cet exemple).
ceci dit, dans son cas, je soupçonne une mauvaise conception, vu les réquisitions contradictoires qu'il demande.
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
donc si je reformule ma question
j'ai un fichier xml qui semble à ça
j'ai besoin de générer des types enum pour les utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <root> <type nom="saison"> <membre>hiver</membre> <membre>ete</membre> </type> <type nom="semaine"> <membre>mardi</membre> <membre>mercredi</membre> </type> </root>
mais mon probléme est du fait que je ne conais pas d'avance les types que je peux les rencontrés dans mon xml
donc j'ai pensé à les générer dynamiquement
j'ai utilisé le code que j'ai sous la main et j'ai vu qu'il retourne un namespace et un type enum mais mon probléme c'est comment utiliser ce code commet
, comment utiliser ce type je n'arrive pas à l'exploiter
Tu te compliques la vie. Pourquoi tu ne crée pas simplement une classe Type avec une propriété Nom et une liste de string contenant les membres ?
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager