在Visual Basic.net中,我可以使用其他对象的类型创建一个Object或T列表。
以下是一些代码:
Dim TestObjectType As Author
Dim TestObject As TestObjectType.GetType
我收到错误:
未定义TestObjectType.GetType
修改
我可以创建某种类型的Type对象,然后从这个Type对象创建对象,列表或将对象强制转换为此类型吗?
答案 0 :(得分: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