2015-10-07 234 views
1

我試圖使用Automapper從前端對象層次結構映射到後端對象層次結構。這需要從源對象中的多個源動態創建子組件。我在其他地方完成了這個任務,沒有任何問題。但在這種情況下,新創建的對象需要自己的屬性才能被映射。自動映射器映射子項

我已經添加了我在下面討論的通用版本。

config.CreateMap<BusinessObject, WebObject>() 
    .ForMember(d => d.Component, opts => opts.ResolveUsing(b => 
    { 
     return new ComponentBusinessObject() 
     { 
      Date = b.Property1.Date, 
      Definition = b.Property2.Definition // This needs converting from (DefinitionWebObject to DefinitionBusinessObject) 
     }; 
    })); 

有沒有人知道重新調用映射器的方式在較低的水平? (在本例中「定義」上面。)

+2

您是否嘗試過使用「Definition = Mapper.Map(b.Property2.Definition)」? – GTG

回答

0

大廈關閉GTG的評論:

如果之前你BusinessObjectWebObject測繪地圖DefinitionWebObjectDefinitionBusinessObject在一起,你應該能夠調用Mapper.Map裏面你父母地圖。

config.CreateMap<DefinitionWebObject, DefinitionBusinessObject>(); // Create sub-mapping first. 

config.CreateMap<BusinessObject, WebObject>() 
    .ForMember(d => d.Component, opts => opts.ResolveUsing(b => 
    { 
     return new ComponentBusinessObject() 
     { 
      Date = b.Property1.Date, 
      Definition = Mapper.Map<DefinitionBusinessObject>(b.Property2.Definition) 
     }; 
    }));