有没有办法从C#代码中使用IronPython对象和函数(编译成程序集)?

时间:2010-09-25 23:07:26

标签: c# ironpython .net-assembly cil cls-compliant

IronPython.net文档说组件中的MSIL不符合CLS,但是有解决方法吗?

2 个答案:

答案 0 :(得分:1)

这部分是将dynamic类型添加到C#4.0的动机。最大的问题是IronPython声明不包含类型信息,这使得很难从C#中使用它。 dynamic关键字为C#4.0添加了对此类动态类型对象的支持。例如见:

从C#3.0调用函数/对象有点烦人,但它是still possible。您只需编写foo.Invoke("Bar", 42)之类的内容,而不只是撰写foo.Bar(42)

答案 1 :(得分:0)

我正在手机上打字,所以请原谅任何愚蠢的错误。要使用已编译的程序集,请确保使用clr.CompileModules编译,而不是pyc.py.然后在C#中调用Python ScriptEngine对象上的LoadAssembly方法。然后可以通过调用ScriptEngine上的ImportModule方法导入该模块。如果您可以利用动态关键字,请执行此操作。否则你会遇到一些魔法串重的GetVariable调用。另请注意,您必须以一种或另一种形式为编译的Python程序集提供标准库。