2013-11-01 85 views
2

我有一个抽象的“GridBase”类有两种派生类“DetailGrid”和“HeaderGrid”。VB.NET抽象属性

分别由“DetailRow”对象和其他“HeaderRow”对象组成。这些都是从“RowBase”抽象类继承而来的。

我所试图做的是以下几点:

Public MustInherit Class GridBase 
    Private pRows As List(Of RowBase) 

    Public ReadOnly Property Rows As List(Of RowBase) 
     Get 
      Return pRows 
     End Get 
    End Property 
End Class 

Public Class DetailGrid 
    Inherits GridBase 
End Class 

在这种情况下,我想DetailGrid.Rows返回DetailRow列表。我希望HeaderRow.Rows返回HeaderRow的列表。我是否在正确的轨道上或者应该将Rows属性包含在GridBase类中?

回答

3

如果你想有一个更强的类型的保证,那么你可能想:

Public MustInherit Class GridBase(Of T as RowBase) 
    Private pRows As List(Of T) 

    Public ReadOnly Property Rows As List(Of T) 
     Get 
      Return pRows 
     End Get 
    End Property 
End Class 

Public Class DetailGrid 
    Inherits GridBase(Of DetailRow) 
End Class 
+0

优秀。这符合我的需要。感谢您的快速回复。 T怎么会在房产中被拿走?它在全班共享?所以如果你想用第二个属性来做到这一点,你不能? – ElPresidente

+1

对'T'没有魔力。对于第二个列表,您可以使用'列表(TT)' – Plutonix