具有动态类型的C#接口/抽象类

时间:2010-12-24 04:34:56

标签: c# abstract-class

我正在编写一系列基于数学的类,每个类都继承自一个抽象类。我希望我的抽象类有一个名为Parameters的getter和setter。

public abstract dynamic Parameters {get; set;}

然后在每个单独的数学类中,我想实现具有特定类型的参数:

如果课程需要一段时间,我会这样做:

public override IPeriod Parameters {get; set;}

这不编译。显然我可以将返回类型更改为dynamic并且它会起作用,但后来我失去了智能感知。有没有一种标准的方法可以做到这一点而不会失去智能感知?

每个类都有一个参数{get; set;}但是它们将是一个不同的类型。从抽象类中消除参数会更好吗?

2 个答案:

答案 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;}