在其中一个方法中,我需要未指定泛型类型Public Class SWTTField(Of dataType)
的变量,只有在知道dataType
的类型时才会实例化。但是,我无法创建变量Dim f As SWTTField
,因为它会给我一个错误To few type arguments to SWTTField(Of dataType)
。如何延迟指定泛型变量的类型,但仍然有变量?
答案 0 :(得分:3)
为了做到这一点,您还需要使用它的类是通用的。例如,假设您有一个使用通用列表的类,如下所示:
Public Class Registry
Private _items As New List(Of Object)()
Public Sub Register(item As Object)
_items.Add(item)
End Sub
End Class
但你不希望它成为List(Of Object)
。相反,您希望它是List(Of ?)
,它将是某个特定类型的列表,但您希望稍后在其他地方指定该类型。在这种情况下,您只需要使外部类也是通用的,如下所示:
Public Class Registry(Of T)
Private _items As New List(Of T)()
Public Sub Register(item As T)
_items.Add(item)
End Sub
End Class
然后,当您使用Registry
类时,您将被迫指定它注册的项目的类型:
Dim x As New Registry(Of User)()