2017-04-12 65 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