库中的内部类是否违反了开放/封闭原则?

时间:2016-02-19 13:20:25

标签: c# architecture

曾几何时,我不得不修改一些外部开源项目以满足内部项目的要求。我已经完成了继承,我认为它是我项目中的库和清洁解决方案的好设计。但是像this这样的一些项目的类是内部的,所以基于继承的扩展是不可能的(这些类只在同一个程序集中可见)。

Here微软表示:

  

具有访问修饰符保护内部的类型或成员可以   从当前程序集或从派生的类型访问   包含类。

将类定义为内部库是一种不好的做法吗?他们应该protected internal是可扩展的吗?

1 个答案:

答案 0 :(得分:2)

简短回答:不,不一定。

我不确定你在这里期待什么样的答案。我看待它的方式,一般的答案可能是" 它取决于"。

如果系统的开发人员希望他们的解决方案的一部分是可扩展的,那么他们应该这样设计它。必须有许多有效的理由说明为什么某人希望能够轻松扩展和/或覆盖其代码的解析。这可能是为了避免破坏与其他组件的可比性,或者避免暴露未来可能发生变化的数据或实现细节,仅举几个公认的模糊和抽象的例子。

如果有疑问,我会联系原始开发者并询问他们;他们可能有充分的理由做出他们所做的设计选择。一旦您了解了更改架构的后果,您就可以考虑做什么:如果可行,您可以向系统提交建议的更改。另一方面,如果您的要求与原始开发人员的要求不同,您可以分支系统并创建自己的单独版本,然后您可以将其返回给社区。这就是开源软件之美。