在 Visual Basic.net 中,我可以使用来自另一个对象的类型创建一个对象或 T 的列表。
这是一些代码:
Dim TestObjectType As Author
Dim TestObject As TestObjectType.GetType
我收到一个错误:
TestObjectType.GetType 未定义
编辑
我可以创建某种类型的 Type 对象,然后从该 Type 对象创建对象、列表或将对象强制转换为该类型吗?
在 Visual Basic.net 中,我可以使用来自另一个对象的类型创建一个对象或 T 的列表。
这是一些代码:
Dim TestObjectType As Author
Dim TestObject As TestObjectType.GetType
我收到一个错误:
TestObjectType.GetType 未定义
编辑
我可以创建某种类型的 Type 对象,然后从该 Type 对象创建对象、列表或将对象强制转换为该类型吗?
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