Чтобы компилятору C # не приходилось искать среди всех типов из всех ссылочных сборок, чтобы определить, существует ли какой-либо определенный пользовательский оператор для преобразования, применяются следующие правила: что либо входной параметр , либо возвращаемый тип любого пользовательского преобразования должны соответствовать типу, в котором определен оператор.
public class ImplicitReturnResult
{
public static implicit operator ReturnResult(OkResult result)
{
return new ReturnResult(true, ResultStatus.Success);
}
}
Ни тип возвращаемого значения (ReturnResult
), ни параметр (OkResult
) для этого оператора не равны ImplicitReturnResult
. Вот почему это не разрешено. Вам нужно переместить этот оператор в ReturnResult
, а не в его базовый класс.
Недостаточно, чтобы один тип наследовал от другого. Это должно быть точное совпадение типов.