簡體   English   中英

為什么System.Design中的許多Designer類標記為內部?

[英]Why are many Designer classes in System.Design marked as internal?

我一直在為我們的產品開發一些組件,其中一個是基於流程布局面板。

我想做的是為它提供一個自定義設計器,但不會丟失它標記為internal的默認設計器( System.Windows.Forms.Design.FlowLayoutPanelDesigner )提供的功能。

使用Reflector我以為我會自己再次實現它,因為它繼承自'FlowPanelDesigner and that from PanelDesigner的所有這些都是內部的。

為什么這些類會被特別標記為內部? 是因為它們專門用於Visual Studio使用,因此不是“框架”代碼?

此外,是否有更簡單的選項重新實現所有功能?

從庫中公開代碼的成本很高。 暴露於框架庫甚至更高。

Ii 強烈推動您在產品的生命周期中保持二進制(和可能的源)兼容性。 更糟糕的是,這些只是供應商想要使用的東西,這意味着MS打破這些類的任何合同可能會破壞使用我的數百或數千付費客戶的小部件。

打破向后兼容性是MSFT歷來避免做的事情(見證了名為Foo2,Foo3和調用Blah和BlahEx的方法的接口數量)。 由於他們一生中以這種方式穩定地承擔了相當大的“債務”,他們已經意識到從一開始就避免這些問題是將來減少此類問題的最便宜方式。 因此,任何新的公共api必須非常強烈地證明它們的存在。

設計時間代碼生成是一種強烈要求在軟件生態系統的生命周期內進行改進的區域(查看VS中的部分類更改以了解該區域的主要變化,但還有許多其他較小的變化)。 通過暴露嚴重依賴於此基礎架構的類,他們將限制其更改其視為競爭優勢的基礎架構的范圍。

因此,合理,安全的方法不是暴露這樣的類。 如果不是微軟的規模和客戶群,我當然會采取相同的方法。

我不知道,但我猜微軟的答案將是“這就是我們制作它的方式”,或者“我們希望減輕維護向后兼容性的負擔”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM