Невозможно вернуть `this` из переопределенного метода базового класса - PullRequest
0 голосов
/ 27 января 2019

Я не могу вернуть this из конкретной реализации метода, даже если подписи все соответствующие.Идея здесь в том, чтобы иметь свободный конструктор, поэтому подкласс BuildNewCar() должен возвращать тип подкласса SimpleCarBuilder.

public class Car {}

abstract class BaseCarBuilder
{
    public abstract T BuildNewCar<T>();
}

class SimpleCarBuilder : BaseCarBuilder
{
    Car _car;

    public override SimpleCarBuilder BuildNewCar<SimpleCarBuilder>()
    {
        _car = new Car();
        return this;
    }
}

Я продолжаю получать:

Невозможно неявно преобразовать типОт SimpleCarBuilder до SimpleCarBuilder

1 Ответ

0 голосов
/ 27 января 2019

Компилятор видит SimpleCarBuilder как имя вашего универсального типа, а не как фактический тип для использования. Он не может преобразовать фактический тип SimpleCarBuilder в параметр универсального типа с именем SimpleCarBuilder, который может фактически представлять любой тип.

Если вы используете функцию абстрактного класса реализации, вы увидите, что компилятор использует T в качестве имени параметра универсального типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...