2017-12-06 19 views

答えて

0

あなたのやり方ではうまくいかない理由はわかりませんが、初期化中に設定することは効果的です。

 Mapper.Initialize(cfg => 
       { 
        cfg.CreateMap<Entity, EntityModel>() 
         .ReverseMap().ForMember(x => x.Messages, o => o.Ignore()); 
        cfg.CreateMap<Message, MessageModel>() 
         .ReverseMap(); 
       }); 

     Mapper.Configuration.AssertConfigurationIsValid(); 

     var model = new EntityModel() { Messages = new List<MessageModel>() { } }; 
     var entity = new Entity() { Messages = new List<Message>() { new Message() { Content = "Test" } } }; 
     Mapper.Map(model, entity); 
     Assert.IsTrue(entity.Messages.Count == 1); 

EDIT

インライン設定では、Initialize方法ですでに設定を提供している場合は効果がありません。だから、それはあなたがしなければならない作業を取得する:

 Mapper.Initialize(cfg => { }); 
     Mapper.Configuration.AssertConfigurationIsValid(); 
     var model = new EntityModel() { Messages = new List<MessageModel>() { } }; 
     var entity = new Entity() { Messages = new List<Message>() { new Message() { Content = "Test" } } }; 
     Mapper.Map(model, entity, opt => opt.ConfigureMap().ForMember(x => x.Messages, o => o.Ignore())); 
+0

はい、私は私のそれはあなたのケースで私のassertIsValid失敗 – Arnaud

+0

@Arnaud、インライン設定をオーバーライドするためにあることを意味しない、私のメインの設定を上書きだ可能に期待しています。詳細はこちら:http://docs.automapper.org/en/stable/Inline-Mapping.html#inline-configurationそして、アサーションはどちらの場合でも失敗しません。 –

関連する問題