自动映射子项目

本文关键字:子项目 映射 | 更新日期: 2023-09-27 18:16:17

我正在尝试使用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)
        };
    }));

有人知道在较低级别重新调用映射器的方法吗?(上面例子中的'Definition')

自动映射子项目

根据GTG的评论构建:

如果在BusinessObjectWebObject映射之前将DefinitionWebObjectDefinitionBusinessObject映射在一起,则应该能够调用Mapper。映射到父映射中

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)
        };
    }));