Mak e Derive1 и Derive2 реализуют общий интерфейс, а затем создают список этого интерфейса. Например, предположим, что вы хотите перебирать свой общий список и иметь такой метод, как CountChildren, который вы можете выполнять как на объектах Derive1, так и на Derive2 в этом списке. Во-первых, вы хотите, чтобы создать интерфейс, например:
Public Interface ICalculations
Function CountChildren() As Integer
End Interface
Затем вы хотите настроить Derive1 и Derive2 так, что они реализуют этот интерфейс. Вот что это может выглядеть следующим образом:
Public Class Derive1
Implements IBasicPortfolio(Of Derive1)
Implements ICalculations
Public Property Value() As Integer
Get
Return m_Value
End Get
Set
m_Value = Value
End Set
End Property
Private m_Value As Integer
Public Property [Next]() As Derive1
Get
Return m_Next
End Get
Set
m_Next = Value
End Set
End Property
Private m_Next As Derive1
Public Function CountChildren() As Integer
Return 1 + [Next].CountChildren()
End Function
End Class
Public Class Derive2
Implements IBasicPortfolio(Of Derive2)
Implements ICalculations
Public Property Value() As Integer
Get
Return m_Value
End Get
Set
m_Value = Value
End Set
End Property
Private m_Value As Integer
Public Property [Next]() As Derive1
Get
Return m_Next
End Get
Set
m_Next = Value
End Set
End Property
Private m_Next As Derive1
Public Function CountChildren() As Integer
Return 1 + [Next].CountChildren()
End Function
End Class
Затем вы можете создать список ICalculations, который может содержать как Derive1 и Derive2 объекты:
Dim foo = New List(Of ICalculations)()
foo.Add(New Derive1())
foo.Add(New Derive2())
For Each bar As var In foo
bar.CountChildren()
Next
Какова взаимосвязь между IBase и IBasicPortfolio? – CodeThug
К сожалению, в образце кода была опечатка. IBase - это общий интерфейс, который реализует оба класса. Я обновил образец кода. – user1208214