是否可以在VB.NET中使用通用的默认属性?

时间:2011-03-08 21:54:34

标签: vb.net generics default

我正在尝试以下方法:

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

使它成为属性更有意义,它将是该类的默认属性。无法在类的实例化时指定数据类型,因为它可以包含多个不同数据类型的对象。

1 个答案:

答案 0 :(得分:2)

不,我认为.Net中不存在(也不会)通用属性。此So-Answer阐明了编译器必须在编译时知道类型的原因:Can I have generics in a Class Property?

[从评论中复制]