У меня есть приложение, которым пользуются довольно технологичные люди, и им нужен небольшой островок программируемости, поэтому я использовал встроенный Iron Python.
Однако, поскольку IronPython 2.0 Eval () больше не работает. В частности, я не могу одновременно загружать модули и вводить локальные переменные.
Есть работа, где я все еще могу вызвать Execute (), распечатать свой ответ и прослушать StandardOut, но затем он выходит в виде строки, и я потерял тип.
Не катастрофа на долгое время, но огромная боль для более сложных объектов.
Кто-нибудь знает, как заставить Eval () снова работать в 2.0, как это было в 1.x?
Ваше здоровье, Янв





Не могли бы вы подробнее рассказать о проблеме и, возможно, привести пример кода? Функциональность в стиле "eval" определенно присутствует, хотя, как вы заметили, интерфейс хостинга значительно изменился по сравнению с 1.0.
Это работает в бета-версии 5:
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString("2 + 5", SourceCodeKind.Expression);
int result = source.Execute<int>();
Кстати, использование правильного SourceCodeKind здесь критично.
Интерфейсы хостинга в пятой бета-версии почти завершены. Я не помню, насколько сильно они изменились между 4 и 5, но я почти уверен, что было изменение немного. RC1 выйдет примерно через неделю.
Этот пример может вам помочь: http://www.voidspace.org.uk/ironpython/dlr_hosting.shtml
Спасибо, Антонио, по сути, это то, чем я сейчас занимаюсь :)
Я на Beta 4, стоит ли переходить на 5?