Dim TestObject As TestObjectType.GetType
将在命名空间TestObjectType
中寻找名为GetType
的类型。
若要使用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
我怀疑这会编译 – Renaissance