我有一个应用程序,由非常懂技术的人使用,他们想要一个小的可编程性岛,所以我使用了嵌入式 Iron Python。
但是,由于 IronPython 2.0 Eval() 不再起作用。具体来说,我无法同时加载模块和注入(inject)局部变量。
有一个解决办法,我仍然可以调用 Execute(),打印出我的答案并收听 StandardOut,但随后它会以字符串形式出现,而我丢失了类型。
长期来看这不是一场灾难,但对于更复杂的对象来说却是一个巨大的痛苦。
有人知道如何让 Eval() 在 2.0 中像在 1.x 中那样再次工作吗?
干杯, 一月
最佳答案
您能否更具体地说明问题,并提供一个代码示例? “eval”风格的功能肯定仍然存在,但正如您所注意到的,自 1.0 以来,托管接口(interface)已经发生了很大变化。
这在 beta 5 中有效:
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromString("2 + 5", SourceCodeKind.Expression);
int result = source.Execute<int>();
顺便说一句,使用正确的 SourceCodeKind
在这里至关重要。
关于c# - 将 IronPython 嵌入到我的 C# 应用程序中的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/199390/