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.GetType将查找命名GetType空间中命名的类型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 回答