2008-10-10 4 views
9

VB.NET에서 컬렉션을 만들고 싶습니다만 특정 유형의 개체 만 받아들이기를 원합니다. 예를 들어 모든면에서 컬렉션처럼 작동하지만 "Foo"유형의 객체 만 허용하는 "FooCollection"이라는 클래스를 만들고 싶습니다. 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)를 참조하십시오.

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 

최종 속성

+0

그것은 그가 무엇을하고 있는지에 따라 달라집니다 –

1

는이 같은 컬렉션에 대한 기본 속성을 구현하는 데 필요한. 목록 은 응용 프로그램 코드 내에서 내부 용으로 사용됩니다. 슈퍼 클래스 또는 컬렉션 인터페이스를 대신 사용하여 List - conssider를 허용하거나 반환하는 공용 API를 작성하지 않아야합니다.
관련 문제