Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilles TOURREAU
Le Fri, 14 Sep 2007 18:40:30 +0200, SL3News a écrit:
Bonjour, J'ai une commande se trouvant dans une variable. Exemple : string maCommand = "int i = 0, y = 2*i + 3;";
Je voudrais pouvoir exécuter le contenu de maCommand comme si j'avais tapé directement l'instruction suivante : int i = 0, y = 2*i + 3;
&maCommand; // par exemple, cette instruction ne marche pas
Quelqu'un a-t-il une solution?
Merci d'avance pour vos contributions.
Il n'existe pas de mécanisme d'évaluation directe sous .NET...
Cependant il y a 2 possibilité pour produire un équivalent : - Utiliser le CodeDOM de .NET pour générer un assembly et le compiler en mémoire (solution simple, un peu lourde) - Utiliser l'objet DynamicMethod de l'espace de nom System.Reflection.Emit pour générer du code (solution complexe nécessite la connaissance du MSIL, mais optimisé).
La 2ème méthode possède aussi un inconvénient dans votre cas, vous devez analyser votre chaine pour savoir quel type de code à générer... Tandis que la 1ère méthode possède une classe : CodeSnippetCompileUnit auquel vous pouvez injecter directement une chaine de caractère à compiler...
Cordialement
-- Gilles TOURREAU
S.A.R.L. P.O.S Le spécialiste en motoculture depuis + de 30 ans ! http://www.pos.fr
Le Fri, 14 Sep 2007 18:40:30 +0200, SL3News <toto@tata.fr> a écrit:
Bonjour,
J'ai une commande se trouvant dans une variable.
Exemple :
string maCommand = "int i = 0, y = 2*i + 3;";
Je voudrais pouvoir exécuter le contenu de maCommand comme si j'avais
tapé
directement l'instruction suivante :
int i = 0, y = 2*i + 3;
&maCommand; // par exemple, cette instruction ne marche pas
Quelqu'un a-t-il une solution?
Merci d'avance pour vos contributions.
Il n'existe pas de mécanisme d'évaluation directe sous .NET...
Cependant il y a 2 possibilité pour produire un équivalent :
- Utiliser le CodeDOM de .NET pour générer un assembly et le compiler en
mémoire (solution simple, un peu lourde)
- Utiliser l'objet DynamicMethod de l'espace de nom System.Reflection.Emit
pour générer du code (solution complexe nécessite la connaissance du MSIL,
mais optimisé).
La 2ème méthode possède aussi un inconvénient dans votre cas, vous devez
analyser votre chaine pour savoir quel type de code à générer...
Tandis que la 1ère méthode possède une classe : CodeSnippetCompileUnit
auquel vous pouvez injecter directement une chaine de caractère à
compiler...
Cordialement
--
Gilles TOURREAU
gilles.tourreau@pos.fr
S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Le Fri, 14 Sep 2007 18:40:30 +0200, SL3News a écrit:
Bonjour, J'ai une commande se trouvant dans une variable. Exemple : string maCommand = "int i = 0, y = 2*i + 3;";
Je voudrais pouvoir exécuter le contenu de maCommand comme si j'avais tapé directement l'instruction suivante : int i = 0, y = 2*i + 3;
&maCommand; // par exemple, cette instruction ne marche pas
Quelqu'un a-t-il une solution?
Merci d'avance pour vos contributions.
Il n'existe pas de mécanisme d'évaluation directe sous .NET...
Cependant il y a 2 possibilité pour produire un équivalent : - Utiliser le CodeDOM de .NET pour générer un assembly et le compiler en mémoire (solution simple, un peu lourde) - Utiliser l'objet DynamicMethod de l'espace de nom System.Reflection.Emit pour générer du code (solution complexe nécessite la connaissance du MSIL, mais optimisé).
La 2ème méthode possède aussi un inconvénient dans votre cas, vous devez analyser votre chaine pour savoir quel type de code à générer... Tandis que la 1ère méthode possède une classe : CodeSnippetCompileUnit auquel vous pouvez injecter directement une chaine de caractère à compiler...
Cordialement
-- Gilles TOURREAU
S.A.R.L. P.O.S Le spécialiste en motoculture depuis + de 30 ans ! http://www.pos.fr