从IronPython向.NET方法传递多个参数
我在.NET(C#)中有一个类:
public class MyHelper {
public object exec( string script, params object[] arguments ) {
// execute script with passed arguments in some external enviroment
}
}
我在代码中使用IronPython运行时来运行Python脚本,这些脚本在某些情况下需要调用“exec”方法。我想要一个方便的方式来调用这个“exec”方法。类似于:
helper.exec( "someExternalFunction( {0}, {1}, {3} )", var01, var02, var03 )
但我不知道如何在C#中声明“exec”方法来实现这个功能。在Python中,我可以使用一个“*args”参数:
def exec( script, *args ):
... do something ...
我不想把Python中的“exec”方法和“MyHelper”类分开,因为“MyHelper”类提供了复杂的功能,都是“集中在一个地方”。
我应该如何在C#中写“exec”方法的声明来实现这个?或者我应该使用什么其他解决方案?
谢谢
2 个回答
1
根据这个常见问题解答,你定义的MyHelper.exec
应该可以接受一个array
作为第二个参数,或者在第一个string
后面接受任意数量的objects
。
如果你调用这个助手的例子没有按预期工作,那可能是IronPython解释器的一个限制,可能需要报告为一个bug。不过在报告之前,请先创建一个简单可运行的C#脚本,展示你想要做的事情(显示它在C#中是如何按预期工作的),以及一个尝试做同样事情但失败的IronPython脚本。这将对解决问题非常有帮助。
与此同时,为什么不直接调用
helper.exec( "someExternalFunction( {0}, {1}, {3} )", [var01, var02, var03] )
呢?
3
这里的问题是“exec”在Python中是一个关键字,所以你不能把它当作函数名来用。你可以用“exec_”或者“execute”之类的名字来代替。或者你也可以这样写:
getattr(helper, 'exec')(...)