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

Mar*_*ark 4 c# abstract-class

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

public abstract dynamic Parameters {get; set;}
Run Code Online (Sandbox Code Playgroud)

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

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

public override IPeriod Parameters {get; set;}
Run Code Online (Sandbox Code Playgroud)

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

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

Qui*_*son 11

是的,使用泛型..

public MyAbstractBaseClass<T>
{
    public abstract T Parameters {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

然后你可以继承指定将用于param的类型.

public PeriodClass : MyAbstractBaseClass<IPeriod>
{
    public override IPeriod Parameters {get; set;}
}
Run Code Online (Sandbox Code Playgroud)