3

Visual Basic.net で、別のオブジェクトの型を持つオブジェクトまたは T のリストを作成できますか。

ここにいくつかのコードがあります:

Dim TestObjectType As Author
Dim TestObject As TestObjectType.GetType

エラーが発生します:

TestObjectType.GetType が定義されていません

編集

特定の型の Type オブジェクトを作成してから、この Type オブジェクトからこの型にオブジェクト、リスト、またはキャスト オブジェクトを作成できますか?

4

1 に答える 1

2

Dim TestObject As TestObjectType.GetTypeGetType名前空間で指定された型を探しますTestObjectType


を使用してクラスのインスタンスを作成するにはSystem.Type、次を使用できますActivator.CreateInstance

Dim TestObject = Activator.CreateInstance(TestObjectType.GetType())

一般的なリストを作成するには、次を使用できますType.MakeGenericType

Dim listType = GetType(List(Of )).MakeGenericType(TestObjectType.GetType())
Dim list = Activator.CreateInstance(listType)

上記の両方のスニペットがObject;を返すことに注意してください。ただし、ジェネリックを使用してコンパイル時の安全性を実現できます。

Dim TestObject = CreateNew(TestObjectType)
Dim AuthorList = CreateNewList(TestObjectType)

...

Function CreateNew(Of T As New)(obj As T) As T 
    Return New T()
End Function

Function CreateNewList(Of T)(obj As T) As List(Of T)
    Return New List(Of T)
End Function
于 2013-10-01T08:02:55.947 に答える