System.Reflection.MethodInfo类是抽象的,那么为什么它有一个受保护的构造函数
本文关键字:为什么 有一个 受保护 构造函数 MethodInfo Reflection 抽象的 System | 更新日期: 2023-09-27 18:10:16
抽象类和接口不能实例化。那么为什么System.Reflection.MethodInfo有自己的受保护构造函数,请解释一下?
创建抽象类的构造函数protected
是一种相当常见的模式。目的是指导程序员使用类/构造函数的预期用途:
-
在试图实例化类的情况下隐藏构造函数(例如从智能感知)(这对于抽象类是不可能的),所以你得到一个额外的提示,类不能被实例化。
摘自《框架设计指南》第4.4章"抽象类设计":
"只有当用户需要创建该类型的实例时,构造函数才应该是公共的。因为不能创建抽象类型的实例,所以带有公共构造函数的抽象类型设计不正确,会误导用户。"
-
同时,构造函数仍然可以用于子类(例如可以在Visual Studio的对象资源管理器或其他形式的参考文档中看到),暗示类型是意味着要以这种方式使用(子类化)。