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)