我正在编写一系列基于数学的类,每个类都继承自一个抽象类。我希望我的抽象类有一个名为Parameters的getter和setter。
public abstract dynamic Parameters {get; set;}
然后在每个单独的数学类中,我想实现具有特定类型的参数:
如果课程需要一段时间,我会这样做:
public override IPeriod Parameters {get; set;}
这不编译。显然我可以将返回类型更改为dynamic
并且它会起作用,但后来我失去了智能感知。有没有一种标准的方法可以做到这一点而不会失去智能感知?
每个类都有一个参数{get; set;}但是它们将是一个不同的类型。从抽象类中消除参数会更好吗?
答案 0 :(得分:11)
是的,请使用泛型..
public MyAbstractBaseClass<T>
{
public abstract T Parameters {get; set;}
}
然后你可以继承指定将用于param的类型..
public PeriodClass : MyAbstractBaseClass<IPeriod>
{
public override IPeriod Parameters {get; set;}
}
答案 1 :(得分:2)
如果您将参数设为通用参数,则可以返回所需的任何类型:
public abstract T Parameters<T> {get; set;}