standard net mvc example ef6 custom c# .net automapper

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)