繁体   English   中英

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

[英]System.Reflection.MethodInfo class is abstract then why it has a protected constructor?

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

使抽象类的构造函数protected是一种相当普遍的模式。 目的是指导程序员遵循类/构造函数的预期用途:

  1. 在试图实例化该类的情况下(对于抽象类是不可能的),它会隐藏构造函数(例如,从Intellisense中隐藏),因此您将获得额外的提示,表明该类无法实例化。

    根据框架设计指南的第4.4章“抽象类设计”:

    “仅当用户需要创建该类型的实例时,构造函数才应该是公共的。因为您不能创建抽象类型的实例,所以带有公共构造函数的抽象类型被错误地设计并误导用户。”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM