c# - 你会不会有太多 "protected virtual"方法?

标签 c# .net virtual protected

这是给那些在大型项目和 API/框架设计方面有经验的人的问题。

我正在开发一个将来会被很多其他项目使用的框架,所以我想把它做得很好并且可扩展,但同时它需要简单易懂。

我知道很多人提示 .NET 框架包含太多密封类和私有(private)成员。我是否应该避免这种批评并向大量 protected 虚拟成员开放我的所有类(class)?

尽可能多地使我的方法和属性 protected 虚拟是个好主意吗?在什么情况下你会避免protected virtual并使成员私有(private)。

最佳答案

你的类包括数据成员;对那些功能永远不会改变的数据成员执行基本内部操作的方法应该始终是私有(private)的。因此,对数据成员执行基本操作(例如初始化和分配)的方法应该是私有(private)的。否则,您将面临“二阶”派生类启用一组不完整行为的风险;一阶派生成员可能会重新定义类的行为。

总而言之,我认为您应该非常小心地将方法定义为“ protected 虚拟”。我会非常谨慎地将方法定义为“ protected 虚拟”,因为这样做不仅声明了覆盖功能的可能性,而且在某些方面定义了覆盖的期望功能。对我来说,这听起来像是一组未定义的要覆盖的行为;我宁愿有一组定义明确的行为来覆盖。如果您想拥有一组非常大的可覆盖行为,我宁愿研究面向方面的编程,它允许以非常结构化的方式进行此类操作。

关于c# - 你会不会有太多 "protected virtual"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319343/

相关文章:

c++ - 绕过虚拟模板函数以实现预期结果

c# - 确定Linq to SQL连接用户帐户

c# - 构建环境 CodeAnalysis 任务无法实例化

java - C#.NET 和 Java 中的二维数组性能

c# - 如何使用 C# 连接 storageuri 和 SAS token 以及如何使用连接的 storageuri 和 SAS token 上传 blob?

virtual - ubuntu服务器的虚拟显示器

c++ - parent 之间的多重继承类型转换 __vftable 似乎已损坏

c# - 如何在鼠标悬停在 C# Web 应用程序上的 Ms 图表中显示数据

c# - IoC 容器示例

C# 如何更改 windows.forms.listview 中的网格线颜色