2017-04-12 33 views
2

我將一個類型參數傳遞給一個類。我想這種類型是一個辭典「日期」和值類型的密鑰類型,可以是任何東西,如下面的類定義:詞典參數 - 強類型鍵,泛型值?

Public Class MyClass(Of T As Dictionary(Of Date, Object)) 

其中,在上面的,「對象」是另一個泛型類型,當聲明類的一個實例時,它可能是一個Integer,String,Widget等。但是,字典中的鍵必須始終爲'Date'類型。例如,以下任何一種情況是可以接受的:

Dim classInstance1 as MyClass(Of Dictionary(Of Date, String)) 
Dim classInstance2 as MyClass(Of Dictionary(Of Date, List(Of Integer))) 

但這並不:

Dim classInstance3 as MyClass(Of Dictionary(Of String, Double) 

...因爲提供給classInstance3密鑰類型不是「日期」。

或者,是有辦法做這樣的事情:

Public Class MyClass(Of T) 

......這樣「T」,對於這個類,永遠意味着「字典(日期,T)」?

我不知道如何讓這個工作 - 任何幫助將非常感激。

+2

爲什麼你需要提及'Dictionary'在無論如何,類型定義?你只需要'公共類MyClass(Of T)',然後是'Dictionary(Of Date,T)'類型的私有變量。 – GSerg

+0

謝謝,好主意。當我嘗試實施時,如下所示,由於某種原因不起作用: –

+0

那麼究竟是什麼原因呢? – GSerg

回答

1

通在可利用爲您的字典值類型的第二泛型類型:

Public Class YourClass(Of V, T As Dictionary(Of Date, V)) 

End Class 

然後instantiante像這樣:

Dim objInstanceOfYourClass As New YourClass(Of String, Dictionary(Of Date, String)) 
+0

謝謝。是的,我想到了這一點,但我試圖做到這一點的全部原因是,只有在類實例化時才需要發送一個類型作爲參數。這個類還實現了一個只有一個泛型類型的接口,所以我認爲這不會起作用。 –

+0

一個類可以實現只有一個泛型的接口,同時擁有兩個接口。 – N0Alias