2012-06-29 2 views
15

하나의 추상 기본 클래스에서 상속하는 두 개의 클래스 (MVC 뷰 모델)가 있습니다.구현을위한 기본 클래스와 다른 구성 옵션을 가진 Automapper

abstract class BaseModel { } 

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

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

및 기본 클래스, 같은과 AutoMapper을 구성하려면 : Automapper은 자동차 또는 캠핑의 구성을 가지고 있지 않기 때문에, 여기에

Mapper.CreateMap<BaseModel, DataDestination>(); 

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

내가 오류가 발생합니다. 다음과 같이 Automapper를 구성하려고 시도했습니다.

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

MapFrom에서 필자는 기본 클래스의 속성 만 볼 수 있습니다! Base 클래스를 사용하기위한 Automapper와 Car 및 Camper에 대한 특정 ForMember 표현식을 구성하는 방법은 무엇입니까? 예를 들어 자동차 인 경우이 속성을이 속성과 매핑하고 Camper 인 경우 다른 곳에서이 속성을 매핑합니다.

답변

25

다음은 Mapping Inheritance을 설명하는 주제입니다.

다음은 당신을 위해 일해야합니다 비슷한 상황에서 근무하지

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) 
+0

이 (http://stackoverflow.com/questions/39541588/cannot [AutoMapper 5 ApplicationUser에 뷰 모델에서 매핑 할 수 없습니다]에 설명 -map-from-viewmodel-to-applicationuser-in-automapper-5? noredirect = 1 # comment66397101_39541588). 어떤 생각? –

관련 문제