Reputation: 85
I'm writing a series of math based class that each inherit from an abstract class. I want my abstract class to have a getter and setter called Parameters.
public abstract dynamic Parameters {get; set;}
Then in each individual math class I want to implement Parameters with a certain type:
If the class requires a period I would do it like this:
public override IPeriod Parameters {get; set;}
This doesn't compile. Obviously I could change the return type to dynamic
and it would work, but then I lose intellisense. Is there a standard way of doing this without losing intellisense?
Every one of the class will have a Parameters {get; set;} but they will be up a different type. Is it better just to eliminate Parameters from the abstract class?
Upvotes: 4
Views: 3468
Reputation: 9857
If you make parameters a generic, you can return whatever type you want:
public abstract T Parameters<T> {get; set;}
Upvotes: 2
Reputation: 82335
Yes, use generics..
public MyAbstractBaseClass<T>
{
public abstract T Parameters {get; set;}
}
then you can inherit specifying the type that will be used for the param like..
public PeriodClass : MyAbstractBaseClass<IPeriod>
{
public override IPeriod Parameters {get; set;}
}
Upvotes: 11