2008-10-13 5 views
2

J'ai une application utilisée par des gens assez tech-savey et ils veulent une petite île de programmation, j'ai donc utilisé Iron Python.Quelle est la meilleure façon d'intégrer IronPython dans mon application C#?

Cependant, depuis IronPython 2.0 Eval() ne fonctionne plus. Plus précisément, je ne peux pas charger les modules et injecter des variables locales.

Il ya un travail autour de l'endroit où je peux encore appeler Execute(), imprimer ma réponse et écouter StandardOut, mais ensuite il sort comme une chaîne et j'ai perdu le type.

Pas un désastre pour longtemps, mais une énorme douleur pour des objets plus complexes.

Est-ce que quelqu'un sait comment faire fonctionner à nouveau Eval() comme dans 1.x?

Cheers, Jan

Répondre

2

Pourriez-vous être un peu plus précis sur le problème, et peut-être donner un exemple de code? La fonctionnalité "eval" est toujours présente, bien que, comme vous l'avez remarqué, l'interface d'hébergement a considérablement changé depuis la version 1.0.

Cela fonctionne en version bêta 5:

ScriptEngine engine = Python.CreateEngine(); 
ScriptSource source = engine.CreateScriptSourceFromString("2 + 5", SourceCodeKind.Expression); 
int result = source.Execute<int>(); 

Par ailleurs, en utilisant le droit SourceCodeKind est essentiel ici.

+0

Je suis sur Beta 4, il vaut la peine d'aller à 5? –

+0

Les interfaces d'hébergement en version bêta 5 sont presque définitives. Je ne me souviens pas à quel point ils ont changé entre 4 et 5, mais je suis presque certain qu'il y a eu des changements. RC1 sortira dans environ une semaine. –

Questions connexes