Основываясь на всех примерах, которые я видел, я ожидал, что это уже решено, но по какой-то причине не могу заставить работать отображение.Я продолжаю получать Missing type map configuration or unsupported mapping.
исключение.Использование Automapper 4.2.1
Вот мои классы:
public class Schedule
{
public ScheduleData ScheduleData { get; set; }
}
// Base type
public abstract class ScheduleData {}
// Sub Types
public class ActionItemScheduleData : ScheduleData {}
public class FormScheduleData : ScheduleData {}
Вот отображение.Я пошел с AfterMap()
подходом и разбил сопоставления по типу.Я не думал, что должен был сделать это, но я получил вышеупомянутую ошибку, когда я только сопоставил базовый тип.Даже при таком подходе с if / else я все равно получаю ошибку.Это из-за моей версии Automapper?
public class ScheduleMapper : Profile
{
protected override void Configure()
{
CreateMap<ActionItemScheduleData, ScheduleDto>(MemberList.Destination)
.ForMember(x => x.Name, c => c.MapFrom(m => m.ActionDescription));
CreateMap<MobileFormScheduleData, ScheduleDto>(MemberList.Destination)
.ForMember(x => x.Name, c => c.MapFrom(m => m.Description));
CreateMap<Schedule, ScheduleDto>(MemberList.Destination)
.AfterMap((s, d) =>
{
if (s.ScheduleData is MobileFormScheduleData)
{
Mapper.Map((MobileFormScheduleData) s.ScheduleData, d);
}
else
{
Mapper.Map((ActionItemScheduleData) s.ScheduleData, d);
}
});
}
}
Вот как я это называю:
var scheduleDto = mapper.Map<ScheduleDto>(schedule);