"多重继承" - 派生基类的方法

时间:2014-04-14 10:57:52

标签: c# asp.net vb.net inheritance

摘要

在VB.NET(.NET 4.0)中,是否可以派生ListControl并为RadioButtonListCheckBoxListDropDownList提供相同的方法?

编辑:我已经添加了C#标签,希望C#有一个也可以与VB.NET一起使用的解决方案。如果不是这种情况,我会删除标签以阻止混淆。

详情

使用此exceptionally helpful answer,我编写了一个类(派生自DropDownList),允许我在回发后的各个.Item对象上保留属性。

我想将此功能扩展到RadioButtonListCheckBoxList控件,但我无法弄清楚这是否可行 - 如果可行,该怎么做。< / 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

1 个答案:

答案 0 :(得分:2)

尝试使用扩展方法。我认为您可以使用下面的扩展方法模拟多重继承。

http://coding.abel.nu/2012/05/emulating-multiple-inheritance-with-extension-methods/