IronPython:当我使用clr.AddReference()导入模块时,如何运行init代码?

时间:2010-09-24 17:58:27

标签: ironpython

我想知道是否有一种方法可以在使用clr.AddReference()导入.NET程序集时运行init代码,就像导入python文件执行 init .py代码驻留在同一目录中。提前谢谢!

2 个答案:

答案 0 :(得分:1)

这是不可能的。

唯一的方法是更改​​clr.AddReference方法。由于IronPython是开源的,因此应该很容易。

答案 1 :(得分:1)

据我所知,这不可能来自clr.AddReference

如果您的程序集具有IronPython模块,则可以在导入代码时运行代码(la __init__.py)。 IronPython模块设置起来非常简单:

[assembly: PythonModule("mymodule", typeof(MyModule))]
public static class MyModule
{
    [SpecialName]
    public static void PerformModuleReload(PythonContext/*!*/ context, PythonDictionary/*!*/ dict) {
        // module initialization code
    }

    // variables, functions, classes, etc. that appear in the module
}

不要被名称的“重新加载”部分弄糊涂;它在模块加载时以及每次重新加载时调用。

如果您的程序集将在IronPython之外使用,您可以将此模块放在引用原始模块的单独程序集中。如果您需要一些如何编写模块的示例,请查看http://ironpython.codeplex.comIronPython.Modules项目的来源。