2011-04-21 74 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;} 
}