CSharp - 来自 C# 代码的IronPython脚本执行

  显示原文与译文双语对照的内容
0 0

我有一个问题,我有这样的代码


this._engine = Python.CreateEngine();
ScriptSource source = this._engine.CreateScriptSourceFromString(script.SourceCode);
ScriptScope scope = this._engine.CreateScope();
ObjectOperations operations = this._engine.Operations;
source.Execute(scope);

我正在尝试从教程中执行IronPython代码:


from System.Collections import BitArray
ba = BitArray(5)
ba.Set(0, True) # call the Set method
print ba[0]

所以它执行得正确,但是我不能理解是否有 print ba[0],为什么它不把这个值输出到控制台? 顺便说一下,你能否建议一些关于应用程序脚本的使用IronPython的?

还有一个问题是,如果我有一个 python 类,并且我不知道这个类的名称,因为客户端可以手动定义这个类,是否可以创建这个类的实例? 例如


class SomeClass(object):
 def some(self, a, b):
 return <something>

现在我正在尝试使用这个代码


dynamic SomeClass = scope.GetVariable("SomeClass");
dynamic something = SomeClass();
something.some(x,y);

我应该循环访问 ScriptScope.GetItems() 集合并搜索 PythonType 对象?

时间: 原作者:

0 0

我想你只需要打电话


this._engine.Runtime.IO.RedirectToConsole();

否则看看这里类似问题重定向。

关于 python C# 类实例化,代码似乎好了,见这问题(看看 3rd 答案)

编辑:

很抱歉,我没有注意到你的问题。

无论如何,要想在 python 中找到可用的类,只要按你说的做

i.e 。类似于:


var availDynClasses = items.Where(x => x.Value is IronPython.Runtime.Types.PythonType);

原作者:
...