You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AutoMapper实现复杂嵌套类型映射 解决配置缺失报错问题

错误原因

  • 目标类DestinationObject的destinationObjectArrayField是destinationObjectArray[]数组类型,你在映射配置中直接返回单个destinationObjectArray实例,类型不匹配触发映射异常
  • 没有配置嵌套类型SourceInnerObjList到destinationInnerObject1Array的映射规则,AutoMapper无法自动识别两个自定义类型的字段对应关系

解决方案

修改CreateMapper方法的映射配置即可,完整修改后的代码如下:

public static IMapper CreateMapper()
{
    var config = new MapperConfiguration(cfg =>
    {
        cfg.AllowNullDestinationValues = true;
        // 先配置内层嵌套类型的映射规则,明确字段对应关系
        cfg.CreateMap<SourceInnerObjList, destinationInnerObject1Array>()
            .ForMember(dest => dest.destinationInnerObjectItem11, o => o.MapFrom(src => src.SourceObjListItem1Id.ToString()))
            .ForMember(dest => dest.destinationInnerObjectItem21, o => o.MapFrom(src => src.SourceObjListItem2d.ToString()));
        
        // 配置根对象的映射规则
        cfg.CreateMap<SourceObject, DestinationObject>()
            .ForMember(dest => dest.destinationTypeField, o => o.MapFrom(src => src.sourceTypeField))
            .ForMember(dest => dest.destinationObjectArrayField, o => o.MapFrom(src => new destinationObjectArray[]
            {
                new destinationObjectArray()
                {
                    mydestinationArrayField = src.SourceObj1Field.SourceObjListss.Select(x => x.SourceObjListItem1Id).FirstOrDefault().ToString(),
                    // 直接赋值源集合,AutoMapper会自动应用上面的内层映射规则完成类型转换
                    dest1Array = src.SourceObj1Field.SourceObjListss.ToArray()
                }
            }));
    });
    // 开发阶段可开启配置校验,快速定位映射缺失、不匹配问题
    config.AssertConfigurationIsValid();
    return config.CreateMapper();
}

核心修改点说明

  1. 提前声明内层自定义类型的映射规则,明确源和目标字段的对应关系
  2. 把destinationObjectArrayField的返回值包裹为数组,和目标字段类型保持一致
  3. 集合类型映射无需手动遍历转换,AutoMapper会自动复用已配置的类型映射规则完成批量转换

如果后续需要映射dest2Array字段,同理先配置SourceInnerObj2List到destinationInnerObject2Array的映射规则即可。


内容的提问来源于stack exchange,提问作者Vignesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:02