2012-02-14 9 views
0

を実装派生クラスで取る汎用リストを貸し付け使用しますどのように私は、ジェネリックインターフェイス(VB.NET)持っていると言う共通のインターフェース

Public Interface IBase(Of T As {IBase(Of T)}) 
    Property Parent() As T 

をそして、私はインターフェイスを実装する2つのクラスを持っている

Public Class Derive1 
    Implements IBase(Of Derive1) 
    Public Property Parent() As Derive1 Implements IBase(Of Derive1).Parent 

Public Class Derive2 
    Implements IBase(Of Derive2) 
    Public Property Parent() As Derive2 Implements IBase(Of Derive2).Parent 
私は、このようなことDerive1やDerive2の両方を受け入れることができ、一般的なリストを使用するにはどうすればよい

genList.Add(Derive1) 
genList.Add(Derive2) 
+2

IBASEとIBasicPortfolioとの間の関係は何ですか? – CodeThug

+0

申し訳ありませんが、コードサンプルにタイプミスがあります。 IBaseは、両方のクラスが実装する共通のインターフェイスです。私はサンプルコードを更新しました。 – user1208214

答えて

0

マックをDerive1とDerive2は共通のインタフェースを実装し、そのインタフェースのListを作成します。たとえば、ジェネリックリストを繰り返し処理し、そのリスト内のDerive1オブジェクトとDerive2オブジェクトの両方で実行できるCountChildrenなどのメソッドがあるとします。まず、あなたはこのように、インターフェイスを作成することをお勧めします:

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

その後、あなたは両方Derive1とDerive2オブジェクトを含めることができ、ICalculationsの一覧を作成することができます。

Dim foo = New List(Of ICalculations)() 

foo.Add(New Derive1()) 
foo.Add(New Derive2()) 

For Each bar As var In foo 
    bar.CountChildren() 
Next
関連する問題