c# - net - Automapper con clase base y diferentes opciones de configuración para implementaciones.
automapper nuget (1)
Tengo dos clases (modelo de vista MVC) que se hereda de una clase base abstracta.
abstract class BaseModel { }
class Car : BaseModel
{
public string Speed { get; set; }
}
class Camper : BaseModel
{
public int Beds { get; set; }
}
y desea configurar AutoMapper con clase base, algo como:
Mapper.CreateMap<BaseModel, DataDestination>();
var someObj = new DataDastination();
Mapper.Map(instanceOfBaseModel, someObj);
Aquí me sale un error, porque Automapper no tiene configuración de Car o Camper. Intenté configurar Automapper con algo como esto:
Mapper.CreateMap<BaseModel, DataDestination>()
.ForMember(dest => dest.SomeProp, mapper => mapper.MapFrom( .... ));
En MapFrom, solo veo propiedades de la clase base! ¿Cómo configurar Automapper para usar BaseClass y la expresión ForMember específica para Car and Camper? Por ejemplo, si es un Coche, asigne esta propiedad a partir de esto, y si es un Camper, asigne esta propiedad desde otro lugar.
Aquí está el tema que describe la herencia de mapeo .
Lo siguiente debería funcionar para usted:
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)