代码之家  ›  专栏  ›  技术社区  ›  TcKs

将多个参数从Ironpython传递到.NET方法

  •  4
  • TcKs  · 技术社区  · 14 年前

    我有一门.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 回复  |  直到 14 年前
        1
  •  3
  •   Dino Viehland    14 年前

    这里的问题是“exec”在python中是一个关键字,因此不能将其用作函数名。您可以使用“exec_uuu”或execute或类似的方法。或者你可以写:

    getattr(助手,“exec”)(…)

        2
  •  1
  •   Jason R. Coombs    14 年前

    根据 this FAQ , the MyHelper.exec 您已经定义了应该同时接受 array 作为第二个参数,或 objects 跟随第一个 string .

    如果对helper的示例调用没有按预期调用,那么这可能是Ironpython解释器的一个限制,并且可能需要 filed as a bug . 但是,在将其作为bug归档之前,请创建一个最小的可运行的C脚本来演示您正在尝试执行的操作(在C中显示它是如何工作的),以及一个Ironpython脚本来尝试执行相同的操作但失败了。这对于解决问题将是无价的。

    同时,为什么不打个电话

    helper.exec( "someExternalFunction( {0}, {1}, {3} )", [var01, var02, var03] )
    

    ?