我正在尝试以下方法:
Default Public Property Data(Of dataType)(ByVal key As String) As dataType
Get
Return DirectCast(values.Item(key), dataType)
End Get
Set(ByVal value As dataType)
values.Item(key) = value
End Set
End Property
值类型为Dictionary(Of String,Object),但是我们有另一个查找字典,其中的数据类型与键相关联。
当然这拒绝编译,因为下面的(Of DataType)下的波浪线:
Type parameters can not be specified on this declaration.
这是不可能的,还是我做错了?
编辑:基本上我正在尝试将其作为属性,以便我不必执行以下操作。
Public Function GetData(Of dataType)(ByVal key As String) As dataType
Return DirectCast(values.Item(key), dataType)
End Function
Public Sub SetData(ByVal key As String, ByVal value As Object)
values.Item(key) = value
End Sub
使它成为属性更有意义,它将是该类的默认属性。无法在类的实例化时指定数据类型,因为它可以包含多个不同数据类型的对象。
答案 0 :(得分:2)
不,我认为.Net中不存在(也不会)通用属性。此So-Answer阐明了编译器必须在编译时知道类型的原因:Can I have generics in a Class Property?
[从评论中复制]