2015-10-07 192 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) 
     }; 
    }));