【发布时间】:2010-09-25 23:07:26
【问题描述】:
IronPython.net 文档说程序集中的 MSIL 不符合 CLS,但有解决方法吗?
【问题讨论】:
标签: c# ironpython .net-assembly cil cls-compliant
IronPython.net 文档说程序集中的 MSIL 不符合 CLS,但有解决方法吗?
【问题讨论】:
标签: c# ironpython .net-assembly cil cls-compliant
这部分是在 C# 4.0 中添加 dynamic 类型的动机。最大的问题是 IronPython 声明不包含类型信息,这使得在 C# 中使用它变得很困难。 dynamic 关键字在 C# 4.0 中添加了对此类动态类型对象的支持。例如:
从 C# 3.0 调用函数/对象有点烦人,但它是 still possible。你只需要写foo.Invoke("Bar", 42) 之类的东西,而不是写foo.Bar(42)。
【讨论】:
我正在手机上输入此内容,请原谅任何愚蠢的错误。要使用已编译的程序集,请确保使用 clr.CompileModules 而不是 pyc.py 进行编译。然后在 C# 中调用 Python ScriptEngine 对象的 LoadAssembly 方法。然后可以通过调用 ScriptEngine 上的 ImportModule 方法来导入模块。如果您可以从那里利用动态关键字,请这样做。否则,您将被一些对 GetVariable 的魔法字符串繁重的调用所困。另请注意,您必须以一种或另一种形式向已编译的 Python 程序集提供标准库。
【讨论】: