我有一个抽象类Model
,由CarModel
实现。
我希望在Clone
抽象类上有一个方法Model
,我想返回实例化类的类型。
例如,我希望CarModel
实施Model
要求Clone
方法返回CarModel
,如下所示:
abstract class Model
{
public abstract Model Clone();
}
class CarModel : Model
{
public override CarModel Clone() {
return undefined;
}
}
但是这不起作用,因为Clone
必须是Model
类型。这不是我想要的结果,因为CarModel
可以实现一个实际返回Clone
的{{1}}方法。
可以这样做吗?如果是这样,怎么样?
答案 0 :(得分:4)
使您的基类通用:
abstract class Model<T>
where T: Model<T>
{
public abstract T Clone();
}
class CarModel : Model<CarModel>
{
public override CarModel Clone()
{
return ...
}
}