簡體   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