我有一个类,它将包装一个字典以对其执行一些操作。我正在尝试像这样实例化它:
class DescriptorList<K, Descriptor>
{
<some code>
}
Descriptor
是我实现的一个类,但由于某种原因,编译器无法识别它并认为它是一个通用关键字(如“T”)。如何让编译器识别我的类型。
如果您只希望键在包装类型中是通用的,则不需要在类声明中为该值添加类型描述符。您只需要在声明要包装的 Dictionary 实例时指定值类型(描述符)。例如:
class DescriptorList<K>
{
private Dictionary<K, Descriptor> wrapped = new Dictionary<K, Descriptor>() ;
...
}
如果您希望字典具有固定类型的值和不同类型的键,您可以像这样实现您的类。
class Descriptor
{}
class DescriptorList<K> : Dictionary<K, Descriptor>
{
<some code>
}
或者,如果您希望字典具有固定类型的键和不同类型的值,则可以使用它。
class Descriptor
{}
class DescriptorList<K> : Dictionary<Descriptor, K>
{
<some code>
}
将包装字典
class DescriptorList<K>
{
private readonly Dictionary<K, Descriptor> wrappedDictionary;
// <some code>
}
您当前的实现无法实现您想要做的事情。您可以执行以下操作(尽管这只是一种解决方法,取决于您要达到的目标);
public class DescriptorList<K, V> where V : Descriptor
{
}
从语法上讲,Descriptor
这里只是一个通用参数,例如T
. 如果您不希望它成为泛型的一部分,只需使用:
class DescriptiorList<K> { ... }