【问题标题】:What's the best way to embed IronPython inside my C# App?在我的 C# 应用程序中嵌入 IronPython 的最佳方式是什么?
【发布时间】:2008-10-13 23:13:02
【问题描述】:

我有一个非常精通技术的人使用的应用程序,他们想要小岛的可编程性,所以我使用了嵌入式 Iron Python。

但是,由于 IronPython 2.0 Eval() 不再起作用。具体来说,我不能既加载模块又注入局部变量。

有一种解决方法,我仍然可以调用 Execute(),打印出我的答案并收听 StandardOut,但是它以字符串形式出现,我丢失了类型。

长期而言不是一场灾难,但对于更复杂的对象来说却是一场巨大的痛苦。

有谁知道如何让 Eval() 在 2.0 中像在 1.x 中一样再次工作?

干杯, 一月

【问题讨论】:

    标签: c# .net ironpython dynamic-language-runtime


    【解决方案1】:

    您能否更具体地说明一下这个问题,或者提供一个代码示例? “eval”风格的功能肯定仍然存在,但正如您所注意到的,托管界面自 1.0 以来发生了很大变化。

    这适用于 beta 5:

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

    顺便说一句,在这里使用正确的SourceCodeKind 很关键。

    【讨论】:

    • 我在 Beta 4,值得去 5 吗?
    • beta 5 中的托管接口几乎是最终版本。我不记得它们在 4 和 5 之间变化了多少,但我很确定有 一些 变化。 RC1 将在大约一周后发布。
    【解决方案2】:

    这个例子可能对你有帮助:http://www.voidspace.org.uk/ironpython/dlr_hosting.shtml

    【讨论】:

    • 谢谢安东尼奥,这就是我目前正在运行的内容:)
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多