我想知道是否有一种方法可以在使用clr.AddReference()导入.NET程序集时运行init代码,就像导入python文件执行 init .py代码驻留在同一目录中。提前谢谢!
答案 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.com上IronPython.Modules
项目的来源。