![](/img/trans.png)
[英]Command binding Unable to cast object of type 'System.Reflection.RuntimeEventInfo' to type 'System.Reflection.MethodInfo'
[英]System.Reflection.MethodInfo class is abstract then why it has a protected constructor?
無法實例化抽象類和接口。那么為什么System.Reflection.MethodInfo擁有自己的受保護構造函數。請解釋一下?
使抽象類的構造函數protected
是一種相當普遍的模式。 目的是指導程序員遵循類/構造函數的預期用途:
在試圖實例化該類的情況下(對於抽象類是不可能的),它會隱藏構造函數(例如,從Intellisense中隱藏),因此您將獲得額外的提示,表明該類無法實例化。
根據框架設計指南的第4.4章“抽象類設計”:
“僅當用戶需要創建該類型的實例時,構造函數才應該是公共的。因為您不能創建抽象類型的實例,所以帶有公共構造函數的抽象類型被錯誤地設計並誤導用戶。”
同時構造仍然是可用的子類(如可以看出,例如在Visual Studio中的對象資源管理器或引用文檔中的某些其他形式),在事實類型意味着使用這種方式(子類)暗示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.