2013-10-12 38 views
2

假設我正在編寫自己的.Net版本:)我是否可以擴展.Net中的所有對象(不僅僅是winforms控件)以具有標籤屬性?

這樣的設置的缺點是什麼?

是的,我在這裏談論一種新的反模式,以避免創建無數的元組和EventArgs。我認爲這樣的設置會使編碼更清潔。

+1

當你有一個重量級的對象,就像一個控件一樣,標籤的開銷非常小。但是在所有對象上都有一個額外的標籤成員 - 這可能會對小對象的內存佔用產生重大影響。 – Baldrick

+1

標記是一個通用術語,如果每個對象都有它,它將如何有用?這聽起來像你試圖發明一種新的反模式。 – Matthew

+0

使用自定義類,從其他接近您需要的類派生,但可以使用其他有用的裝飾。 – OneFineDay

回答

5

不。Tag屬性具有歷史記錄,它在VB6中很重要,Winforms是爲了取代它。需要添加它才能使移植代碼相對簡單。

在.NET中完全沒有必要。它支持實現繼承,這是VB6沒有的功能。所以如果你想添加額外的屬性,那麼你只需派生一個類並添加它們。而且你可以給他們一個好名字和一個類型,所以你不必每次閱讀該物業時都要投。這與Winforms控件一樣好。

相關問題