X 不要定义 public 或 protected internal 访问的构造函数。默认 C# 语言不提供抽象类的公开构造函数方法。

如果一个构造函数定义为公开,只有在开发者需要创建这个类的实例的时候才可以这样做。因为开发者不应该创建一个抽象类的实例,所以如果一个抽象类可以创建实例就是一个不好的实现,容易让开发者做出不恰当代码。

✓ 定义抽象类的构造函数为 protected 或 internal 访问

定义抽象类的构造函数为 protected 是比较推荐的方法,因为定义为 protected 让这个类只能在基类继承,创建可实例化的基类的实例。

定义抽象类的构造函数为 internal 可以限制开发者只能在只是程序集内使用这个类,当然即使定义为 internal 还是无法创建抽象类的实例。

✓ 提供至少一个可实例化类继承抽象类在自己的库里。

做这个是为了方便验证抽象类的设计。如 System.IO.FileStream 继承抽象类 System.IO.Stream 而且 FileStream 可以创建实例。

当然这个只是建议,如果在开发一个 dotnet standard 项目,需要注入一个和具体框架有关的类,于是先设计一个抽象类放在库。在具体的 dotnet framework 等框架创建这个抽象类的基类,用于做和具体平台相关代码。那么不在库放一个实现抽象类的类也是可以的。但是这时建议在测试项目继承这个抽象类,尝试测试类的设计。

最新文章

  1. 让一个图片在div中居中(四种方法)
  2. 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu
  3. Windows下安装Redis
  4. nagios 自定义插件demo
  5. POJ 1386 Play on Words(欧拉图的判断)
  6. String的几种初始化方法的区别
  7. 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程01: 资源导入》
  8. 【HDOJ】1484 Basic wall maze
  9. 仿知乎app登录界面(Material Design设计框架拿来就用的TexnInputLayout)
  10. windows下提权基础
  11. Arrays和String单元测试(课下作业,选做)
  12. map映照容器
  13. win7下Google谷歌浏览器上传下载卡死无响应
  14. Dart - Isolate 并发
  15. SpringMVC Get请求传集合,前端"异步"下载excel 附SpringMVC 后台接受集合
  16. CRM 数据查重
  17. 【python38--面向对象继承】
  18. python之模块copy_reg(在python3中为copyreg,功能基本不变)
  19. xss脚本注入后端的防护
  20. 通过shell进行数学计算

热门文章

  1. .NET6 开源之JSON 2 SQL (JORM框架)
  2. UiPath文本操作Get Visible Text的介绍和使用
  3. 基于后端和爬虫创建的代理ip池
  4. 《ASP.NET Core 6框架揭秘》样章发布[200页/5章]
  5. PTA(BasicLevel)-1094 谷歌的招聘
  6. 这么强?!Erda MySQL Migrator:持续集成的数据库版本控制
  7. X86寄存器
  8. 总结vue 需要掌握的知识点
  9. 5-19 SpringAop | 切面编程
  10. js入门基础