Скрыть аргументы универсального типа за результатами конкретного типа в CS0535C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Скрыть аргументы универсального типа за результатами конкретного типа в CS0535

Сообщение Гость »

У меня довольно академический вопрос: почему технически невозможно использовать следующий код?

Код: Выделить всё

// abstractions
public record MappingRequest(TContract Contract, TEntity Entity);

public interface IMapper
{
TResult Map(MappingRequest request);
}

// more readable abstraction
public interface ILocationMapper : IMapper
{
}

// concrete
public record LocationResult;
public record LocationContract;
public record LocationEntity;

public record LocationRequest(LocationContract Contract, LocationEntity Entity) : MappingRequest(Contract, Entity);

public class LocationMapper : ILocationMapper
{
public LocationResult Map(LocationRequest request)
{
return new LocationResult();
}
}
Это выдает следующую ошибку компилятора:

Код: Выделить всё

Error CS0535 : 'LocationMapper' does not implement interface member 'IMapper.Map(MappingRequest)'
Почему компилятор не может «сделать вывод» (не совсем уверен, правильный ли здесь термин), что LocationRequest наследуется от MappingRequest?
Спасибо за объяснение 🙏🏻

Источник: https://stackoverflow.com/questions/781 ... -in-cs0535
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»