2017-11-21 16 views
1

I 따라서 객체가 . 나는 이것이 가능하다고 생각하지만 어떻게 할 수없는 것 같습니다.AutoMapper는

내가 시도 ...

CreateMap<TopLevel, JoinedClass>() 
    .ForAllMembers(opt=>opt.MapFrom(tl=>tl.SecondLevels.FirstOrDefault()) 
    .ForMemeber(jc=>jc.AProperty, opt=>opt.MapFrom(tl=>tl.AProperty) 
    .ForMemeber(jc=>jc.AnotherProperty , opt=>opt.MapFrom(tl=>tl.AnotherProperty); 

하지만 전혀 어떤 속성을 매핑하지 않는 것 같습니다. 위의 매핑에 마지막으로 ForAllMembers()을 넣었습니다. 행운도 없습니다. 내가 AutoMapper 6.2.0 난 당신이 항상 하나 하나를 매핑 할 수 있습니다 당신이 ForAllMembers를 사용할 수 있다고 생각하지 말아

+0

"작동하지 않는 것"이란 무엇을 의미하며 어떤 오류가 있습니까? –

답변

0

을 사용하고는, 여기에 예입니다

설정 매핑 구성

public static MapperConfiguration SetupMapping() 
{ 
    return new MapperConfiguration(cfg => 
    { 
     cfg.CreateMissingTypeMaps = true; 
     cfg.CreateMap<TopLevel, JoinedClass>() 
      .ForMember(jc => jc.Athing, opt => opt.MapFrom(t1 => t1.SecondLevels.FirstOrDefault().AThing)) 
      .ForMember(jc => jc.AnotherThing, opt => opt.MapFrom(t1 => t1.SecondLevels.FirstOrDefault().AnotherThing)) 
      ; 
    }); 
} 

var seconds = new SecondLevel[] { 
new SecondLevel { AThing = "one", AnotherThing = 1 }, 
new SecondLevel { AThing = "two", AnotherThing = 2 } 
     }; 

var toplevel = new TopLevel { AProperty = "top", AnotherProperty = 99, SecondLevels = seconds }; 

MapperConfiguration config = SetupMapping(); 
IMapper mapper = config.CreateMapper(); 

var result = mapper.Map<JoinedClass>(toplevel);