返回没有具体类的接口

时间:2014-11-13 08:09:57

标签: .net interface

我遇到一个帖子,说当返回一个接口时,不应该返回实现它的具体类,因为它使程序员使用返回接口的函数根据他们看到的返回值假设事物。它可能导致代码现在工作,但在以后的版本可能不会。 所以最后到了问题。有没有办法从实现它的具体类中分离接口返回类型?我是否可以返回一个界面而没有来自具体的其他元数据并且可供其他人使用? 感谢

1 个答案:

答案 0 :(得分:1)

您返回的引用的声明应该始终是接口类型,而不是实现它的具体类。这样的类通常被声明为 internal ,因此没有人可以随意使用它,并且您可以自由地更改其实现,而不会破坏任何客户端代码。

然而,在运行时,客户端程序员总是将能够看到哪个类实际实现了该接口。并且可以窥视私人部分。你无法阻止这一点,调试器足够聪明,可以搞清楚。这就是调试器的作用。这无关紧要,调试器提供的视图并不意味着客户端程序员可以在您的类上自由派对。辅助功能仍在编译时强制执行。但是,如果他试图抓住飞机回家并且你没有拿​​起电话,那么是的,他可能会使用Reflection来帮助自己摆脱困境。你将打破你的下一个版本的Q& D hack并不会让他感到惊讶:)