在名为test.py
的文件中,我有以下代码:
def foo(callback):
callback(1, 2, 3)
def bar(x, y, z):
print x, y, z
在IronPython控制台中执行foo(bar)
时,它输出:
1 2 3
我想从C#应用程序中调用foo()
。以下C#代码执行foo()
,并传递一个C#回调函数。
var engine = Python.CreateEngine();
dynamic scope = engine.CreateScope();
engine.ExecuteFile("test.py", scope);
scope.callbackFunction = new Action<int, int, int>
((x, y, z) => Debug.Print("{0}\t{1}\t{2}", x,y,z));
scope.foo(scope.callbackFunction);
输出结果为:
1 2 1
我无法弄明白为什么x == z
。为什么C#输出1 2 1
而不是1 2 3
?我是否错误地发送了C#回调函数?
我在Windows 7上运行它,C#应用程序的目标是.NET 4.5,而我的IronPython版本是2.7.4。