2011-04-21 70 views
3

首先,我想说我对C#sharp很陌生。有什么办法实现像下面这样的构造吗?或者有没有其他的方法来存档?在抽象字典中使用Enum Bastetype作为关键字

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;} 
} 

编辑: 我忘了说,在词典的具体实例都需要实现一个自定义Enum的比较器需要一个具体的枚举得到初始化

对于所有谁感兴趣的在这种情况下需要的自定义枚举比较器查看此链接:Custom-Enum-Comparer

+1

请注意,使用枚举作为字典键会在比较过程中将枚举类型框起来,因为它没有实现IEquatable。请参阅:http://beardseye.blogspot.com/2007/08/nuts-enum-conundrum.html – ahawker 2011-04-21 07:55:32

+0

感谢您的建议,但我已经知道,因此使用自定义枚举比较器实例化字典。 [链接](http://www.codeproject.com/KB/cs/EnumComparer.aspx) – sra 2011-04-21 08:41:46

回答

4

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

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;} 
}