我有一个类,它将包装一个字典来对它执行一些操作。我试图将它实例化为:
class DescriptorList<K, Descriptor>
{
<some code>
}
Descriptor
是我实现的一个类,但由于某种原因,编译器无法识别并认为它是一个通用关键字(如'T')。如何让编译器识别我的类型。
答案 0 :(得分:2)
如果您只希望密钥在包装类型中是通用的,则在类声明中不需要类型描述符。当您声明要包装的Dictionary实例时,只需要指定值类型(描述符)。例如:
class DescriptorList<K>
{
private Dictionary<K, Descriptor> wrapped = new Dictionary<K, Descriptor>() ;
...
}
答案 1 :(得分:1)
如果您希望字体具有固定类型的值并更改键的类型,则可以像这样实现您的类。
class Descriptor
{}
class DescriptorList<K> : Dictionary<K, Descriptor>
{
<some code>
}
或者你可以使用它,如果你想让键的固定类型的字典和值的类型不同。
class Descriptor
{}
class DescriptorList<K> : Dictionary<Descriptor, K>
{
<some code>
}
答案 2 :(得分:1)
将包裹字典
class DescriptorList<K>
{
private readonly Dictionary<K, Descriptor> wrappedDictionary;
// <some code>
}
答案 3 :(得分:0)
您当前的实施无法实现您的目标。您可以执行以下操作(虽然这只是一种解决方法,取决于您尝试实现的目标);
public class DescriptorList<K, V> where V : Descriptor
{
}
答案 4 :(得分:0)
从语法上讲,Descriptor
此处 只是一个通用参数,例如T
。如果您不希望它成为通用的一部分,请使用:
class DescriptiorList<K> { ... }