Используйте Ente Bastetype в качестве ключа в абстрактном словаре - PullRequest
3 голосов
/ 21 апреля 2011

Сначала я хочу сказать, что я новичок в 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;}
}

РЕДАКТИРОВАТЬ: Я забыл сказать, что конкретный экземпляр словаря необходимо реализовать пользовательский Enum-компаратор, который требует конкретного перечисленияинициализированный

Для всех, кто заинтересован в пользовательском enum-Comparer, который необходим в этом случае, взгляните на эту ссылку: Custom-Enum-Comparer

1 Ответ

4 голосов
/ 21 апреля 2011

Вы можете добавить аргумент универсального типа к уровню класса / интерфейса

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