2008-10-10 110 views
9

我想在VB.NET中創建一個集合,但我只希望它接受某種類型的對象。例如,我想創建一個名爲「FooCollection」的類,它以各種方式充當集合,但只接受類型爲「Foo」的對象。VB.NET強類型集合

我想我可以做到這一點使用仿製藥,使用的語法如下:

Public Class FooCollection(Of type As Foo) 
     Inherits CollectionBase 

     ... 

    End Class 

,但我得到當我編譯它,我「必須實現一個默認的訪問」錯誤,因此顯然有什麼東西不見了。我不想指定它在我實例化時接受的類型 - 我希望FooCollection本身指定它只接受Foo對象。我已經看到它在C#中使用強類型列表完成,所以我正在尋找的可能是VB.NET語法。

感謝您的幫助!

編輯:謝謝你的答案。這將做到這一點,但我想有CLASSTYPE名爲一定的方式,我其實只是做正是我一直在尋找與下面的代碼:

Public Class FooCollection 
    Inherits List(Of Foo) 

End Class 

回答

10

你爲什麼不只是使用List(Of Foo) ..它已經在VB.NET下的System.Collections.Generic。使用時,只需聲明這樣:

Private myList As New List(Of Foo) 'Creates a Foo List' 
Private myIntList As New List(Of Integer) 'Creates an Integer List' 

更多信息請參見MSDN > List(T) Class (System.Collections.Generic)

+0

這要看他在做什麼。列表旨在供應用程序代碼內部使用。您應該避免編寫接受或返回列表的公共API,而應考慮使用超類或集合接口。 – 2012-09-19 10:28:32

1

您需要實現像這樣的集合的默認屬性:

Default Public Property Item(ByVal Index As Integer) As Foo 
Get 
    Return CType(List.Item(Index), Foo) 
End Get 
Set(ByVal Value As Foo) 
    List.Item(Index) = Value 
End Set 

高端物業