Определяемое пользователем преобразование должно преобразовывать в или из вмещающего типа в asp core 2.2 - PullRequest
0 голосов
/ 22 марта 2019

Я создаю этот класс, и у него есть этот конструктор:

 public class ReturnResult : ImplicitReturnResult
{
    public bool Success { get; }
    public ResultStatus Status { get; }
    public string Message { get; }

    public ReturnResult(bool Success, ResultStatus Status, string Message = null)
    {
        this.Success = Success;
        this.Status = Status;
        this.Message = Message ?? Status.ToDisplay();
    }


}

и в этом классе мне нужно использовать конструктор этого класса:

 public class ImplicitReturnResult
{
    public static implicit operator ReturnResult(OkResult result)
    {
        return new ReturnResult(true, ResultStatus.Success);
    }
}

Я использую этот код, но он показывает мне эту ошибку:

Ошибка CS0556 Определяемое пользователем преобразование должно преобразовываться в или из вмещающего

В чем проблема? как я могу решить эту проблему ????

1 Ответ

1 голос
/ 22 марта 2019

Чтобы компилятору C # не приходилось искать среди всех типов из всех ссылочных сборок, чтобы определить, существует ли какой-либо определенный пользовательский оператор для преобразования, применяются следующие правила: что либо входной параметр , либо возвращаемый тип любого пользовательского преобразования должны соответствовать типу, в котором определен оператор.

public class ImplicitReturnResult
{
    public static implicit operator ReturnResult(OkResult result)
    {
        return new ReturnResult(true, ResultStatus.Success);
    }
}

Ни тип возвращаемого значения (ReturnResult), ни параметр (OkResult) для этого оператора не равны ImplicitReturnResult. Вот почему это не разрешено. Вам нужно переместить этот оператор в ReturnResult, а не в его базовый класс.

Недостаточно, чтобы один тип наследовал от другого. Это должно быть точное совпадение типов.

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