У меня есть абстрактный класс 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
.
Можно ли это сделать? И если да, то как?
Возможный дубликат [C# типов возврата ковариантны с использованием дженериков] (http://stackoverflow.com/questions/4348760/c-sharp-covariant-return-types- использование-generics) –