Chcę utworzyć kolekcję w VB.NET, ale chcę tylko akceptować obiekty określonego typu. Na przykład chcę utworzyć klasę o nazwie "FooCollection", która działa jak kolekcja pod każdym względem, ale akceptuje tylko obiekty typu "Foo".VB.NET Kolekcja silnie typowana
Myślałem, że mogę zrobić to za pomocą rodzajowych, używając następującej składni:
Public Class FooCollection(Of type As Foo)
Inherits CollectionBase
...
End Class
Ale pojawia się błąd, gdy mogę skompilować go, że „musi wdrożyć domyślny akcesor”, więc wyraźnie czegoś brakuje. Nie chcę określać typu, który akceptuje, gdy uruchamiam instancję - chcę, aby FooCollection sam był specyficzny, że akceptuje tylko obiekty Foo. Widziałem to zrobić w języku C# z listy typu "strong-typed", więc może wszystko, czego szukam, to składnia VB.NET.
Dzięki za pomoc!
EDYCJA: Dziękuję za odpowiedź. Że zrobi to, ale chciałem mieć ClassType nazwie w określony sposób, tak naprawdę osiągnąć dokładnie to, czego szukałem z następującego kodu:
Public Class FooCollection
Inherits List(Of Foo)
End Class
To zależy od tego, co robi. Lista jest przeznaczona do użytku wewnętrznego w kodzie aplikacji. Powinieneś unikać pisania publicznych API, które akceptują lub zwracają Listę - rozważaj zamiast tego używanie superklasy lub interfejsu kolekcji. –