2014-07-09 4 views
0

AutoMapper 프레임 워크를 처음 사용했습니다. 하나의 객체에 매핑되어야하는 3 ~ 5 개의 복잡한 객체가 있습니다.AutoMapper를 사용하여 3 개 또는 N 개의 복잡한 개체를 하나의 개체로 매핑하는 방법

예를 들어, LaptopInfo 객체에는 4 개의 객체 모두에서 채워 져야하는 필드가 있으므로 LipInfo에 MemoryCardInfo를 매핑해야합니다.

어떻게 AutoMapper를 사용하여 달성 할 수 있습니까? 4 개의 객체에 .ForMember를 사용하여 CreateMap을 수행 할 수있는 답변을 찾을 수 없습니다. 당신은 기존 개체에 매핑 할 수있는 오버로드를 사용하여, 당신이 그 조합 각각에 대한 매핑을 만드는 경우에 따라 감사

업데이트 된 코드

public class AutoMapperConfig 
{ 
    Mapper.Initialize(x => 
    { 
     x.AddProfile<chipInfoMapperProfile>(); 
     x.AddProfile<(hardDiskInfoMapperProfile>(); 
     x.AddProfile<monitorInfoMapperProfile>(); 
     x.AddProfile<memoryCardInfoMapperProfile>(); 
       }); 
} 


public class chipInfoMapperProfile : Profile 
    { 
     protected override void Configure() 
     { 
      Mapper.CreateProfile(Profiles.ChipProfileName).CreateMap<chipInfo, laptopInfo>() 
        .ForMember(x => x.LapTopChipProperty, opt => opt.MapFrom(source => source.ChipProperty)); 
     } 
    } 

public class hardDiskInfoMapperProfile : Profile 
    { 
     protected override void Configure() 
     { 
      Mapper.CreateProfile(Profiles.hardDiskProfileName).CreateMap<hardDiskInfo, laptopInfo>() 
        .ForMember(x => x.LaptopHardDiskProperty, opt => opt.MapFrom(source => source.HardDiskProperty)); 
     } 
    } 

public class monitorInfoMapperProfile: Profile 
    { 
     protected override void Configure() 
     { 
      Mapper.CreateProfile(Profiles.monitorInfoProfileName).CreateMap<monitorInfo, laptopInfo>() 
        .ForMember(x => x.LaptopMonitorInfoProperty, opt => opt.MapFrom(source => source.MonitorInfoProperty)); 
     } 
    } 

답변

1

입니다 도와주세요. .

var laptopInfo = new LaptopInfo(); 

Mapper.Map(chipInfo, laptopInfo); 
Mapper.Map(hardDiskInfo, laptopInfo); 
Mapper.Map(monitorInfo, laptopInfo); 
Mapper.Map(memoryCardInfo, laptopInfo); 

는 기본적으로, 당신은 단지 소스 객체 각각에 대해 기존/대상 개체에 매핑을 적용하고 있습니다 :

코드를 다음과 같이 보일 수 있습니다.

+0

답장을 보내 주셔서 감사합니다 그러나 그것은 내가하고 싶은 일을하지 않습니다. 원래 질문에서 코드를 업데이트했습니다. 각 프로파일에서 사용되지 않는 속성을 무시해야한다는 오류가 발생합니다. 문제는 내가 모든 것을 한 객체 전체에 맵핑하지 않는다는 것입니다. 마지막 프로필에 매핑 된 것이 대상 개체 만 채 웁니다. 다른 모든 것은 기본값을 가져옵니다. – AllSpark