1

我在我的一个应用程序中托管了一个 IronPython 环境。在那种环境中,我想访问由接口表示的对象的某些方法。但我想让 IronPython 只能访问接口导出的那些方法。

我可以做这个:

ITheInterface obj = (ITheInterface)origObj;
sc.SetVariable("obj", obj);

其中 sc 是范围,origObj 是实现 ITheInterface 的类的实例,而 ITheInterface 是……嗯……接口。

但我仍然可以访问 ITheInterface 未导出的 origObj 实例的公共方法。

如何限制 IronPython 仅访问接口导出的那些方法?

4

1 回答 1

1

原因是 IronPython 根据对象的运行时类型进行所有调用。要隐藏不需要的方法,请创建一个类 (TheInterfaceWrapper),该类包含 ITheInterface 引用,但仅通过转发到正确的方法来实现接口。这样,运行时类型就没有任何额外的方法。

另一个选项会干扰您的其他代码,但您可以将 [PythonHidden] 属性添加到您不希望在 IronPython 中可见的方法中。

于 2013-01-05T18:46:27.683 回答