我们假设你有以下三个课程:a,b和c。
我想将这些类(不是这些类的实例)添加到稍后要使用的泛型类型列表中。
是否可以使用此列表中的一个元素作为类型声明另一个变量?
如下所示。
其中" obj"成为任何类型的实例" t"是
我不确定该问题的标题是什么,所以请您自由编辑,以便清晰。
Class a
Public gI As String
End Class
Class b
Public gI As String
End Class
Class c
Public gI As String
End Class
Class main
Sub new()
Dim types As New List(Of Type)
types.Add(GetType(a))
types.Add(GetType(b))
types.Add(GetType(c))
For Each t As Type In types
Dim obj As GetType(t) 'I cannot seem to get this line to work
Console.WriteLine(obj.GetType)
'Output should be
'a
'b
'c
Next
end sub
End Class
答案 0 :(得分:3)
Dim obj As GetType(t)
变为
Dim obj As Object = t.GetConstructor(Type.EmptyTypes).Invoke(Nothing)
因为你没有定义一个接口或基类,所以没有"类型"表示除了Object之外的a,b和c。
因为它是一个实例,你必须实例化它,所以代码找到默认的构造函数并实例化它
答案 1 :(得分:0)
嘿,你已经拥有它了。您已经使用GetType来填充列表。您现在再次尝试GetType?
只需迭代列表并直接返回对象 - 已经是... a Type:
Public Module Module1
Class a
Public gI As String
End Class
Class b
Public gI As String
End Class
Class c
Public gI As String
End Class
Public Sub Main()
Dim types As New List(Of Type)
types.Add(GetType(a))
types.Add(GetType(b))
types.Add(GetType(c))
For Each t As Type In types
Console.WriteLine(t)
Next
End Sub
End Module