c# – 你有没有太多的“受保护的虚拟”方法?

对于具有较大项目和API /框架设计经验的人来说,这是一个问题.

我正在开发一个未来许多其他项目将使用的框架,所以我想让它变得很好和可扩展,但同时需要简单易懂.

我知道很多人抱怨.NET框架包含太多的密封类和私有成员.我应该避免这种批评,并开放我所有的课程,并拥有大量受保护的虚拟成员?

使我的方法和属性尽可能多地保护虚拟化是一个好主意吗?在什么情况下你会避免保护虚拟和成员私人.

最佳答案
你的课程包括数据成员;执行功能不应该更改的数据成员的基本内部操作的方法应始终为私有的.因此,与数据成员进行基本操作(如初始化和分配)的方法应该是私有的.否则,您将遇到“二阶”派生类获得一组不完整行为的风险;一级派生成员可能会重新定义该类的行为.

这一切都说,我认为你应该非常小心地将方法定义为“受保护的虚拟”.在将方法定义为“受保护的虚拟”时,我会非常小心,因为这样做不仅可以声明覆盖功能的可能性,而且在某些方面定义了覆盖功能的期望.这听起来像一个未定义的行为,以覆盖;我宁愿有一套明确的行为来覆盖.如果你想要有一个非常大的可以覆盖的行为,我宁愿看看面向方面的编程,它以一种非常结构化的方式允许这种事情.

转载注明原文:c# – 你有没有太多的“受保护的虚拟”方法? - 代码日志