如何定义继承通用抽象类的通用抽象类?

Rob*_*t D 1 c# generics abstract-class

我有一个类继承了一个继承另一个抽象类的抽象类.我可以将最超级的类定义为通用的,但我不知道如何在我在最终ListResults类中表达我想要的实际类型之前将中间类定义为泛型.

internal abstract class LowerCommand<T> {
    public abstract void Execute();
    public abstract List<T> ExecuteList();
}

// currently gives error for `T`
internal abstract class HigherCommand : Lowercommand<T> {
    // ... defines other stuff, nothing to do with
    //     already instantiated methods or T ...
}

class ListResults : HigherCommand<Results>
{
    public override void Execute() {...}
    public override List<Results> ExecuteList() {...}
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

dka*_*man 5

您仍然需要在定义上定义泛型类型参数T,HigherCommand以便它可以依次正确定义LowerComand.

internal abstract class LowerCommand<T> {
    public abstract void Execute();
    public abstract List<T> ExecuteList();
}

// Note that HigherCommand require a declaration of `T`
internal abstract class HigherCommand<T> : Lowercommand<T> {
    // ... defines other stuff, nothing to do with
    //     already instantiated methods or T ...
}

class ListResults : HigherCommand<Results>
{
    public override void Execute() {...}
    public override List<Results> ExecuteList() {...}
}
Run Code Online (Sandbox Code Playgroud)