У меня есть 3 объекта: QuestionA
, QuestionB
, QuestionC
, которые все являются производными от абстрактного BaseQuestion
.
Затем у меня есть AnswerA
, который наследует BaseAnswer<QuestionA>
, AnswerB
который выводит BaseAnswer<QuestionB>
, AnswerC
, который выводит BaseAnswer<QuestionC>
,
Мне нужно сопоставить AnswerA
с AnswerDTO
(то же, что и B и C).
Итак, я написал этот код:
CreateMap<BaseAnswer<BaseQuestion>, AnswerDTO>()
.ForMember(
dto => dto.UserDisplay,
o => o.MapFrom(x => $"{x.User.FirstName} {x.User.LastName}"));
CreateMap<AnswerB, AnswerDTO>()
.IncludeBase<BaseAnswer<BaseQuestion>, AnswerDTO>();
Но это вызывает эту ошибку:
AnswerB is not derived from BaseAnswer`1[BaseQuestion]. (Parameter 'derivedType')
Я попытался изменить его вот так
CreateMap<AnswerB, AnswerDTO>()
.IncludeBase<BaseAnswer<QuestionB>, AnswerDTO>();
и добавить:
CreateMap<BaseAnswer<QuestionB>, AnswerDTO>()
.IncludeBase<BaseAnswer<BaseQuestion>, AnswerDTO>();
Но я вызываю аналогичную ошибку.
Я мог бы написать это так, и он работает, но это избыточно:
CreateMap<BaseAnswer<QuestionA>, AnswerDTO>()
.ForMember(
dto => dto.UserDisplay,
o => o.MapFrom(x => $"{x.User.FirstName} {x.User.LastName}"));
CreateMap<BaseAnswer<QuestionB>, AnswerDTO>()
.ForMember(
dto => dto.UserDisplay,
o => o.MapFrom(x => $"{x.User.FirstName} {x.User.LastName}"));
CreateMap<BaseAnswer<QuestionC>, AnswerDTO>()
.ForMember(
dto => dto.UserDisplay,
o => o.MapFrom(x => $"{x.User.FirstName} {x.User.LastName}"));