摘要
在VB.NET(.NET 4.0)中,是否可以派生ListControl
并为RadioButtonList
,CheckBoxList
,DropDownList
提供相同的方法?
编辑:我已经添加了C#标签,希望C#有一个也可以与VB.NET一起使用的解决方案。如果不是这种情况,我会删除标签以阻止混淆。
详情
使用此exceptionally helpful answer,我编写了一个类(派生自DropDownList
),允许我在回发后的各个.Item
对象上保留属性。
我想将此功能扩展到RadioButtonList
和CheckBoxList
控件,但我无法弄清楚这是否可行 - 如果可行,该怎么做。< / p>
这在C ++中是相当直接的,因为它具有多重继承的能力 - 但我被困在这里。
显而易见的解决方案是复制DropDownList
派生类,但如果代码没有重复3次,我更愿意这样做。
任何人都可以指出我正确的方向,因为我在这里有一个真正的大脑屁?
这大致是我已经为派生的DropDownList
控件所拥有的,它完美地工作......
<ToolboxData("<{0}:DropDownListPersistant runat=""server""></{0}:DropDownListPersistant>"), DefaultProperty("Text")> _
Public Class DropDownListPersistant
Inherits DropDownList
Protected Overrides Function SaveViewState() As Object
...
End Function
Protected Overrides Sub LoadViewState(ByVal savedState As Object)
...
End Sub
End Class
这是我尝试过的,但它确实不有效,因为显然DropDownListPersistant
不再来自DropDownList
...
Public Class ListControlPersistant
Inherits ListControl
Protected Overrides Function SaveViewState() As Object
...
End Function
Protected Overrides Sub LoadViewState(ByVal savedState As Object)
...
End Sub
End Class
<ToolboxData("<{0}:DropDownListPersistant runat=""server""></{0}:DropDownListPersistant>"), DefaultProperty("Text")> _
Public Class DropDownListPersistant
Inherits ListControlPersistant
End Class
答案 0 :(得分:2)
尝试使用扩展方法。我认为您可以使用下面的扩展方法模拟多重继承。
http://coding.abel.nu/2012/05/emulating-multiple-inheritance-with-extension-methods/