我有一个.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 ...
我不希望在“MyHelper”类中使用单独的Python方法“exec”,因为“MyHelper”类在“一个地方”提供了复杂的功能。
我应该如何在C#中编写“exec”方法声明来实现呢?或者我应该使用其他什么解决方案?
由于
答案 0 :(得分:3)
这里的问题是“exec”是Python中的关键字,因此您不能将其用作函数名称。您可以使用“exec_”或执行或类似的东西。或者你可以写:
getattr(helper,'exec')(...)
答案 1 :(得分:1)
根据this FAQ,您定义的MyHelper.exec
应该同时接受array
作为第二个参数,或接受第一个objects
之后的任何数量的string
}}
如果你的示例调用helper没有按预期调用,那可能是IronPython解释器的限制,可能需要filed as a bug。然而,在将其作为错误提交之前,请创建一个最小的可运行C#脚本来演示您正在尝试执行的操作(显示它在C#中的预期效果),以及尝试执行相同操作但失败的IronPython脚本。这对于使问题有效是非常宝贵的。
与此同时,为什么不打电话
helper.exec( "someExternalFunction( {0}, {1}, {3} )", [var01, var02, var03] )