1

我有一个类,它将包装一个字典以对其执行一些操作。我正在尝试像这样实例化它:

class DescriptorList<K, Descriptor>
{
     <some code>
}

Descriptor是我实现的一个类,但由于某种原因,编译器无法识别它并认为它是一个通用关键字(如“T”)。如何让编译器识别我的类型。

4

5 回答 5

2

如果您只希望键在包装类型中是通用的,则不需要在类声明中为该值添加类型描述符。您只需要在声明要包装的 Dictionary 实例时指定值类型(描述符)。例如:

class DescriptorList<K>
{
   private Dictionary<K, Descriptor> wrapped = new Dictionary<K, Descriptor>() ;

   ...
}
于 2013-01-23T13:15:00.790 回答
1

如果您希望字典具有固定类型的值和不同类型的键,您可以像这样实现您的类。

class Descriptor
{}

class DescriptorList<K> : Dictionary<K, Descriptor>
{
     <some code>
}

或者,如果您希望字典具有固定类型的键和不同类型的值,则可以使用它。

class Descriptor
{}

class DescriptorList<K> : Dictionary<Descriptor, K>
{
     <some code>
}
于 2013-01-23T13:11:57.763 回答
1

包装字典

class DescriptorList<K>
{
   private readonly Dictionary<K, Descriptor> wrappedDictionary;

   //   <some code>
}
于 2013-01-23T13:16:08.313 回答
0

您当前的实现无法实现您想要做的事情。您可以执行以下操作(尽管这只是一种解决方法,取决于您要达到的目标);

public class DescriptorList<K, V> where V : Descriptor
{        
}
于 2013-01-23T13:14:47.723 回答
0

从语法上讲,Descriptor这里只是一个通用参数,例如T. 如果您不希望它成为泛型的一部分,只需使用:

class DescriptiorList<K> { ... }
于 2013-01-23T13:14:51.207 回答