2011-03-08 61 views
2

我试图如下:是否有可能在VB.NET中有一个通用的默认属性?

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 

值是输入字典(字符串,对象),但我们有关联的密钥数据类型另一个查找字典。

当然这种拒绝编译,用波浪线下(中的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

不,我认为通用性不(也不会)。这个So-Answer阐明了为什么编译器必须知道'compile'-time的类型:http://stackoverflow.com/questions/3358374/can-i-have-generics-in-a-class-property/3375127#3375127 – 2011-03-08 22:30:42

+0

这没有发生,放弃了所有的希望。 – 2011-03-09 00:03:55

+0

@Tim Schmelter,你可以将其作为答案发布,以便我可以将其标记为正确吗? – 2011-03-09 00:14:25

回答

2

不,我认为泛型属性不会(也不会)在.Net中可能。这个所谓的答案阐明为什么编译器必须知道在编译时的类型:可能在.net Can I have generics in a Class Property?

[从评论复制]

相关问题