我有一个由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
的BikeModel
方法。能做到吗?如果是这样,怎么办?
最佳答案
使您的基类通用:
abstract class Model<T>
where T: Model<T>
{
public abstract T Clone();
}
class CarModel : Model<CarModel>
{
public override CarModel Clone()
{
return ...
}
}