C# 使用枚举类型作为抽象字典中的键

C# 使用枚举类型作为抽象字典中的键,c#,dictionary,enums,key,C#,Dictionary,Enums,Key,首先我想说的是,我对C#sharp很陌生。有没有办法实现如下构造?或者有没有其他方法来存档 public interface IClass { Dictionary<Enum, ISecondClass> { get; } } public abstract class ClassBase : IClass { public abstract Dictionary<Enum, ISecondClass> { get; protected set;}

首先我想说的是,我对C#sharp很陌生。有没有办法实现如下构造?或者有没有其他方法来存档

public interface IClass 
{ 
    Dictionary<Enum, ISecondClass> { get; } 
}

public abstract class ClassBase : IClass
{
    public abstract Dictionary<Enum, ISecondClass> { get; protected set;}
}

public class ConcreteClass : ClassBase
{
    public override Dictionary<ConreteEnum, ISecondClass> { get; protected set;}
}
公共接口类
{ 
字典{get;}
}
公共抽象类类库:IClass
{
公共抽象词典{get;受保护集;}
}
公共类:ClassBase
{
公共重写字典{get;protected set;}
}
编辑: 我忘了说字典的具体实例需要实现一个自定义枚举比较器,该比较器需要一个具体的枚举来初始化


对于所有对本例中所需的自定义枚举比较器感兴趣的人,请查看此链接:

您可以向类/接口级别添加泛型类型参数

public interface IClass<TEnum>
{ 
    Dictionary<TEnum, ISecondClass> { get; } 
}

public abstract class ClassBase<TEnum> : IClass<TEnum>
{
    public abstract Dictionary<TEnum, ISecondClass> { get; protected set;}
}

public class ConcreteClass : ClassBase<ConcreteEnum>
{
    public override Dictionary<ConcreteEnum, ISecondClass> { get; protected set;}
}
公共接口类
{ 
字典{get;}
}
公共抽象类类库:IClass
{
公共抽象词典{get;受保护集;}
}
公共类:ClassBase
{
公共重写字典{get;protected set;}
}

请注意,使用枚举作为字典键会在比较期间对枚举类型进行框选,因为它没有实现IEquatable。请参阅:感谢您的建议,但我已经知道了这一点,因此请使用自定义枚举比较器实例化字典。