2011-03-08 60 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?

[從評論複製]

相關問題