System.Reflection.MethodInfo类是抽象的,那么为什么它有一个受保护的构造函数?

时间:2015-08-29 07:24:28

标签: c#

抽象类和接口无法实例化。那么为什么System.Reflection.MethodInfo有自己的受保护构造函数。请解释一下吗?

1 个答案:

答案 0 :(得分:2)

制作抽象课程'构造函数protected是一种相当常见的模式。目的是指导程序员实现类/构造函数的预期用途:

  1. 它隐藏了构造函数(例如来自Intellisense),在一个人试图实例化类的情况下(使用抽象类是不可能的),因此你得到一个额外的提示,即该类无法实例化。

    来自框架设计指南,第4.4章和第34章;抽象类设计":

      

    "只有当用户需要创建该类型的实例时,构造函数才应公开。因为您无法创建抽象类型的实例,所以具有公共构造函数的抽象类型设计不正确并且误导用户。"

  2. 同时构造函数仍然可用于子类(例如在Visual Studio的对象资源管理器或其他形式的参考文档中可以看到),暗示类型是意味着以这种方式使用(子类)。