2008-10-13 4 views
2

У меня есть приложение, используемое людьми с высокими технологиями и они хотят небольшой остров программирования, поэтому я использовал встроенный Iron Python.Каков наилучший способ встроить IronPython в мое приложение C#?

Однако, поскольку IronPython 2.0 Eval() больше не работает. В частности, я не могу загружать модули и вводить локальные переменные.

Существует работа, в которой я все еще могу вызвать Execute(), распечатать свой ответ и прослушать стандартную команду, но затем она выйдет как строка, и я потерял тип.

Не катастрофа надолго, но огромная боль для более сложных объектов.

Кто-нибудь знает, как заставить Eval() снова работать в 2.0, как в 1.x?

Приветствие, Jan

ответ

2

Не могли бы вы быть немного более конкретной информацией о проблеме, и, возможно, предоставить пример кода? Функциональность «eval» -типа определенно по-прежнему присутствует, хотя, как вы заметили, интерфейс хостинга значительно изменился с 1.0.

Это работает в бета-версии 5:

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

Кстати, пользуясь правом SourceCodeKind имеет решающее значение здесь.

+0

Я на бета-4, он стоит идти 5? –

+0

Интерфейсы хостинга в бета-версии 5 практически окончательны. Я не помню, сколько они изменились между 4 и 5, но я уверен, что произошли изменения *. RC1 выйдет примерно через неделю. –