是否有可能從VB.net中的兩個類繼承?VB.net繼承2類
我們正在開發繼承自System.Web.UI.WebControls.Label的自定義用戶控件。我們正計劃實施一系列這些控件,但他們將共享大多數相同的附加屬性。我們希望集中這些屬性。
我已經看過接口,但它似乎只有'契約'屬性,你需要實現。
想法?
是否有可能從VB.net中的兩個類繼承?VB.net繼承2類
我們正在開發繼承自System.Web.UI.WebControls.Label的自定義用戶控件。我們正計劃實施一系列這些控件,但他們將共享大多數相同的附加屬性。我們希望集中這些屬性。
我已經看過接口,但它似乎只有'契約'屬性,你需要實現。
想法?
不是。VB.net類型不可能繼承多個類。可以實現無限數量的接口,但繼承僅限於一種類型。
注意:這不是一個任意的VB.Net限制。這實際上是CLR中的一項限制。像C++/CLI這樣的語言通過一些非常有趣的類型flattening例程來解決這個問題,但是在CLR級別,它們使用單一繼承。
謝謝JaredPar - 對我們實現的最佳方式的任何建議這個情況?忘記集中,只是在每個屬性中實現? – 2012-01-16 22:22:46
@ timmah.faase我會將通用功能放到一個類中,然後讓用戶只需擁有一個該類型的字段並使用相同的命名屬性轉發到字段類型。並可能爲共享功能創建接口 – JaredPar 2012-01-16 22:24:05
不,你不能繼承兩個類。
然而,我們究竟面臨的是你做同樣的問題,並解決它以下列方式:
1)我們創建了由每個控件的實現,使他們可以很容易地發現的接口。
2)我們創建了一個設置類,其中包含所有類共有的設置和邏輯。
3)我們向1中創建的接口添加了一個屬性,以暴露設置類,以便我們可以對所有屬性執行標準操作。
考慮只是使用[組合](http://en.wikipedia.org/wiki/Object_composition)來代替http://stackoverflow.com/a/178368/284240 – 2012-01-16 22:24:28