是否拒绝IronPython访问不属于接口的公共函数? [英] Deny IronPython access to public functions not part of interface?

查看:0
本文介绍了是否拒绝IronPython访问不属于接口的公共函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我可以这样做:

ITheInterface obj = (ITheInterface)origObj;
sc.SetVariable("obj", obj);
其中sc是作用域,OrigObj是实现ITheInterface类的实例,ITheInterface...嗯..。界面。

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

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

推荐答案

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

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

这篇关于是否拒绝IronPython访问不属于接口的公共函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆