2008-10-10 65 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 

高端物业