如果我们使用Type作为字典的键,是否可以将该类型仅限制为特定类型?例如:
public abstract class Base
{ }
public class InheritedObject1 : Base
{ }
public class InheritedObject2 : Base
{ }
public class Program
{
public Dictionary<Type, string> myDictionary = new Dictionary<Type, string>();
}
因此,从上面给出的代码中我想将Type仅限制为:Base和从中继承的每个类。有可能做出这样的约束吗?
答案 0 :(得分:8)
只需创建一个继承自Dictionary
的模板类,如下所示:
class CustomDictionary<T> : Dictionary<T, string>
where T : Base
{
}
然后您可以根据需要在代码中使用它:
public void Test()
{
CustomDictionary<InheritedObject1> Dict = new CustomDictionary<InheritedObject1>();
Dict.Add(new InheritedObject1(), "value1");
Dict.Add(new InheritedObject1(), "value2");
}
答案 1 :(得分:1)
如果你这样做
public Dictionary<Base, string> myDictionary = new Dictionary<Base, string>();
然后只有Base
及其子项才能用作键(在此特定情况下Base
为abstract
,因此只有子项适用。)