2017-11-21 6 views
1

私は、このようにオブジェクトを持っています。 これは可能だと思いますが、それをどうやってうまくいくかわかりません。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私はあなたが常に1対1にマッピングできあなたが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);