首先是一些背景(以防有帮助):
我的应用程序是最近升级到 .Net Framework v3.5 的基于 Web 的框架,但不使用母版页/用户控制系统。它更类似于 MVC 模式(虽然更老),并从模板的响应流中输出纯 HTML。Python 表达式允许实现一些规则和模板变体。
老办法
在 C# 中嵌入 IronPython 1.x 引擎时,我们能够执行以下代码:
PythonEngine pe = new PythonEngine();
Assembly a = Assembly.LoadFile("path to assembly");
pe.LoadAssembly(a);
pe.Import("Script");
ipy 2.0 中没有 Import() 方法,并且 ImportModule() 方法的工作方式似乎不同。Import() 减少了在我们编写的每个 python 脚本中添加一行的需要,例如:
from MyAssembly import MyClass
MyClass 充满了静态方法,这意味着对 MyClass.MyMethod() 的调用非常有效。我不能只实例化一个对象并将其分配给范围内的变量,因为 MyClass 包含在其中的程序集是在运行时动态加载的。
现在的问题
我已经整理了 IronPython 2.0 集成的所有其他部分,但不希望我的实现者在他们编写的每个脚本的顶部键入“from MyAssembly import MyClass”(当 ipy 1 中没有必要时,这似乎很愚蠢.x) 并且可能在一段时间内也是一个支持问题。
最后是问题
有没有人遇到过这个问题并解决了?我是否以错误的方式为 DLR 做事?还是我错过了一些明显的东西?
我不确定某人需要帮助的细节,但我希望这已经足够了。