Deny IronPython access to public functions not part of interface?(是否拒绝IronPython访问不属于接口的公共函数?)
问题描述
我的一个应用程序中托管了一个IronPython环境。在那个环境中,我想访问由接口表示的对象的某些方法。但我想让IronPython只访问由接口导出的那些方法。
我可以这样做:
ITheInterface obj = (ITheInterface)origObj;
sc.SetVariable("obj", obj);
其中sc是作用域,OrigObj是实现ITheInterface类的实例,ITheInterface...嗯..。界面。
但我仍然可以访问未由ITheInterface导出的OrigObj实例的公共方法。
如何才能将IronPython的访问限制为仅访问接口导出的那些方法?
推荐答案
这是因为IronPython会根据对象的运行时类型进行所有调用。要隐藏不需要的方法,请创建一个类(TheInterfaceWrapper),该类包含ITheInterface引用,但只通过转发到适当的方法来实现接口。这样,运行时类型就不会有任何额外的方法。
另一个选项会干扰您的其他代码,但您可以将[PythonHidden]属性添加到您不希望在IronPython中可见的方法。
这篇关于是否拒绝IronPython访问不属于接口的公共函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!