2013-07-26 82 views
0

我有一個目標對象的列表,我想與源協調。AutoMapper非破壞性列表覈對?

該列表已創建,我只是希望AutoMapper從此列表中添加/更新/刪除項目,而不應將該列表設置爲新的對象引用。我怎樣才能做到這一點?

原因是目標對象是一個ORM生成的代碼,並且出於任何原因它沒有setter。

目標看起來是這樣的:

public class Target 
{ 
     //This is the target member. 
     public List EntityList 
     { 
      get{ 
       return _entityList; 
      } 
     } 

     //Except this is a much more complicated, track-able list 
     private List _entityList= new List(); 
} 

回答

0

從我的經驗,AutoMapper是不是真的有測繪設計上考慮到已經填充的對象。但要做到你的要求的一種方式是配置AutoMapper忽略EntityList屬性映射,然後使用AfterMap調用一些自定義的調整功能,你寫對齊兩個列表:

Mapper.CreateMap<Source, Target>() 
       .ForMember(dest => dest.EntityList, opt => opt.Ignore()) 
       .AfterMap((src, dest) => Reconcile(src.EntityList, dest.EntityList));