我有一个由Model实现的抽象类CarModel

我想在Clone抽象类上有一个方法Model,我想返回实例化类的类型。

例如,我希望实现CarModelModel要求返回CloneCarModel方法,如下所示:

abstract class Model
{
    public abstract Model Clone();
}

class CarModel : Model
{
    public override CarModel Clone() {
        return undefined;
    }
}


但是,这不起作用,因为Clone必须是Model类型。这不是我想要的结果,因为然后CarModel可以实现实际上返回CloneBikeModel方法。

能做到吗?如果是这样,怎么办?

最佳答案

使您的基类通用:

abstract class Model<T>
     where T: Model<T>
{
    public abstract T Clone();
}

class CarModel : Model<CarModel>
{
    public override CarModel Clone()
    {
        return ...
    }
}

09-08 07:54