2010-12-24 15 views
4

Ich schreibe eine Reihe mathematisch basierter Klassen, die jeweils von einer abstrakten Klasse erben. Ich möchte, dass meine abstrakte Klasse einen Getter und Setter namens Parameter hat.C# -Schnittstelle/Abstrakte Klasse mit dynamischem Typ

public abstract dynamic Parameters {get; set;} 

Dann in jedem einzelnen Mathe-Klasse-I-Parameter mit einer bestimmten Art implementieren möchten:

Wenn die Klasse eine Zeit benötigt würde ich es tun, wie folgt:

public override IPeriod Parameters {get; set;} 

Diese doesn‘ t kompilieren. Natürlich könnte ich den Rückgabetyp auf dynamic ändern und es würde funktionieren, aber dann verliere ich Intellisense. Gibt es eine Standardmethode, dies zu tun, ohne Intellisense zu verlieren?

Jede Klasse hat einen Parameter {get; Set;}, aber sie werden einen anderen Typ haben. Ist es besser, nur Parameter aus der abstrakten Klasse zu entfernen?

Antwort

11

Ja, verwenden Generika ..

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

dann können Sie den Typ erben angeben, die wie für die param verwendet werden ..

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

Wenn Sie die Parameter ein generisches machen, können Sie Geben Sie den gewünschten Typ zurück:

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