9

VB.NET でコレクションを作成したいのですが、特定の種類のオブジェクトのみを受け入れるようにしたいと考えています。たとえば、あらゆる点でコレクションのように機能する「FooCollection」というクラスを作成したいと考えていますが、「Foo」タイプのオブジェクトのみを受け入れます。

次の構文を使用して、ジェネリックを使用してこれを実行できると思いました。

    Public Class FooCollection(Of type As Foo)
        Inherits CollectionBase

        ...

    End Class

しかし、コンパイルすると、「デフォルトのアクセサーを実装する必要があります」というエラーが表示されるため、明らかに何かが欠けています。インスタンス化するときに受け入れる型を指定したくありません - FooCollection 自体が Foo オブジェクトのみを受け入れるように指定したいのです。厳密に型指定されたリストを使用して C# で実行されているのを見たことがあるので、探しているのは VB.NET 構文だけかもしれません。

ご協力いただきありがとうございます!

編集:答えてくれてありがとう。それはできますが、クラスタイプに特定の方法で名前を付けたかったので、実際に次のコードで探していたものを正確に達成しました。

Public Class FooCollection
    Inherits List(Of Foo)

End Class
4

2 に答える 2

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)してください。

于 2008-10-10T04:45:21.040 に答える
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

End プロパティ

于 2010-02-16T00:00:11.220 に答える