接口(interface)提供了有用的抽象功能。一个人可以让一个类Foo实现某些接口(interface),例如A,B和C。某些客户端代码可以获取类型A的引用,其他人可以获取类型B的引用,等等。每个实际上都相同的Foo对象,但是该接口(interface)仅暴露了一个狭窄的对象。功能的子集。当然,邪恶的客户端代码可以尝试将A引用转换为Foo,然后访问其他功能,如何防止这种情况发生?
最佳答案
这被称为“恶意强制转换”,您可以通过使用仅实现您要公开的狭窄接口(interface)的包装程序(通过委派对您否则将直接传递给邪恶客户端的对象的私有(private)引用)来防止这种情况。
但是,如果委托(delegate)人不仅邪恶,而且也很强大,则无论如何,他也许可以使用反射来获取隐藏的引用。
关于c# - 接口(interface)的转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2621314/