我想在VB.NET中创建一个集合,但我只希望它接受某种类型的对象。例如,我想创建一个名为“FooCollection”的类,它在各方面都像一个集合,但只接受“Foo”类型的对象。
我认为我可以使用泛型来执行此操作,使用以下语法:
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
答案 0 :(得分:10)
为什么不使用List(Of Foo)
...它已经在System.Collections.Generic
下的VB.NET中。要使用,只需声明:
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)
。
答案 1 :(得分: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
结束财产