2010-12-24 6 views
4

Я пишу серию математического класса, каждый из которых наследуется от абстрактного класса. Я хочу, чтобы мой абстрактный класс имел геттер и сеттер под названием «Параметры».C# Интерфейс/Абстрактный класс с динамическим типом

public abstract dynamic Parameters {get; set;} 

Тогда в каждом конкретном математическом классе я хочу реализовать параметры с определенным типом:

Если класс требует определенного периода я хотел бы сделать это следующим образом:

public override IPeriod Parameters {get; set;} 

Это Безразлично» т компилировать. Очевидно, я мог бы изменить тип возврата на dynamic, и это сработает, но потом я потеряю intellisense. Существует ли стандартный способ сделать это без потери intellisense?

Каждый из классов будет иметь параметры {get; set;} но они будут другого типа. Лучше ли просто исключать параметры из абстрактного класса?

ответ

11

Да, использовать дженерик ..

public MyAbstractBaseClass<T> 
{ 
    public abstract T Parameters {get; set;} 
} 

, то вы можете наследовать указав тип, который будет использоваться для Пар как ..

public PeriodClass : MyAbstractBaseClass<IPeriod> 
{ 
    public override IPeriod Parameters {get; set;} 
} 
2

Если вы параметрамы родовой, вы можете вернуть нужный тип:

public abstract T Parameters<T> {get; set;} 
Смежные вопросы