从其他对象类型创建对象

时间:2013-10-01 07:38:40

标签: vb.net types createobject

在Visual Basic.net中,我可以使用其他对象的类型创建一个Object或T列表。

以下是一些代码:

Dim TestObjectType As Author
Dim TestObject As TestObjectType.GetType

我收到错误:

  

未定义TestObjectType.GetType

修改

我可以创建某种类型的Type对象,然后从这个Type对象创建对象,列表或将对象强制转换为此类型吗?

1 个答案:

答案 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