Какой лучший способ встроить IronPython в мое приложение C #? - PullRequest
2 голосов
/ 14 октября 2008

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

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

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

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

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

Cheers, Jan

Ответы [ 2 ]

2 голосов
/ 14 октября 2008

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

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

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

Кстати, использование правильного SourceCodeKind здесь очень важно.

1 голос
/ 14 октября 2008

Этот пример может вам помочь: http://www.voidspace.org.uk/ironpython/dlr_hosting.shtml

...