c# - 将 IronPython 嵌入到我的 C# 应用程序中的最佳方式是什么?

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

我有一个应用程序,由非常懂技术的人使用,他们想要一个小的可编程性岛,所以我使用了嵌入式 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/

相关文章:

c# - 如何用 Ilnumerics 矩阵计算克罗内克和?

c# - async Task<bool> if 条件下的方法调用

Python 返回的字符串既是 str 又是 unicode 类型

c# - 使用单声道从 C# 调用 IronPython 对象

python - 列表中最后一次出现的不是字符串的项目 - Python

c# - 在运行时在 Crystal 报表中从 odbc 切换到 oledb

c# - 如何使多个文本框只读

c# - ASP.NET Core 1.0 Web API 中的简单 JWT 身份验证

c# - UserControl 的 RenderControl 要求在 (C# .NET) 中使用表单标记

.net - .NET webforms 的 HTML5 需要 =""属性