Automapper с базовым классом и различными параметрами конфигурации для реализаций

У меня есть два класса (модель представления MVC), которые наследуются от одного абстрактного базового класса.

abstract class BaseModel { }

class Car : BaseModel 
{
    public string Speed { get; set; }
}

class Camper : BaseModel
{
    public int Beds { get; set; } 
}

и хотите настроить AutoMapper с базовым классом, например:

Mapper.CreateMap<BaseModel, DataDestination>();

var someObj = new DataDastination();
Mapper.Map(instanceOfBaseModel, someObj);

Здесь я получаю ошибку, потому что у Automapper нет конфигурации Car или Camper. Попробовал настроить Automapper примерно так:

Mapper.CreateMap<BaseModel, DataDestination>()
    .ForMember(dest => dest.SomeProp, mapper => mapper.MapFrom( .... ));

В MapFrom я вижу только свойства из базового класса! Как настроить Automapper для использования BaseClass и конкретного выражения ForMember для Car and Camper? Например, если это автомобиль, сопоставьте это свойство с этим, и если это Camper, сопоставьте это свойство откуда-то еще.

Ответы

Ответ 1

Вот тема, описывающая Наследование карт.

Для вас должно работать следующее:

Mapper.CreateMap<BaseModel, DataDastination>()
    .Include<Car, DataDastination>()
    .Include<Camper, DataDastination>();//.ForMember(general mapping)
Mapper.CreateMap<Car, DataDastination>();//.ForMember(some specific mapping)
Mapper.CreateMap<Camper, DataDastination>();//.ForMember(some specific mapping)