5
如何从IronPython脚本访问C#类? C#:从IronPython脚本访问主机类
public class MyClass
{
}
public enum MyEnum
{
One, Two
}
var engine = Python.CreateEngine(options);
var scope = engine.CreateScope();
scope.SetVariable("t", new MyClass());
var src = engine.CreateScriptSourceFromFile(...);
src.Execute(scope);
IronPython的脚本:
class_name = type(t).__name__ # MyClass
class_module = type(t).__module__ # __builtin__
# So this supposed to work ...
mc = MyClass() # ???
me = MyEnum.One # ???
# ... but it doesn't
UPDATE
我需要导入一个托管组件定义的类。
我可以从外部程序集导入一个类。但我需要使用宿主程序集中的一个类。启动python脚本的那个。我试图玩弄导入,但无法找到一种方法来做到这一点。 – Max 2011-06-04 09:25:51
@Max:主机程序集并不是什么特别的 - 你需要像从任何其他程序集那样从它导入。你可以在它的'AddReference()'调用中放入完整的绝对路径给它的DLL - 如果这样做,那么你知道它只是一个路径/当前目录问题(这可能很烦人,但至少你会知道是否该代码是否有效) – Cameron 2011-06-04 14:02:02
由于脚本被托管,我确信我不需要导入托管程序集。现在,我已经尝试过,我发现它正在工作。奇怪的是,当我通过类实例并查询类名和模块时,它看起来像这个类已经是全局名称空间的一部分。 – Max 2011-06-04 19:39:44