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

如何用AutoMapper从嵌套对象集合映射出合并属性的目标集合?

问题解决:AutoMapper 嵌套对象属性映射失败修复

问题原因

当前映射配置中,OuterSource到Destination仅手动配置了MyBool的映射规则,但AutoMapper无法自动识别Destination的MyProperty1、MyProperty2需要从OuterSource.Inner对象中取值,导致这些属性被初始化为类型默认值(int默认0)。

修复方案

修改MyMappingProfile,通过IncludeMembers指定复用InnerSource→Destination的映射规则,同时保留MyBool的自定义转换逻辑:

public class MyMappingProfile : Profile
{
    public MyMappingProfile()
    {
        CreateMap<InnerSource, Destination>();
        CreateMap<OuterSource, Destination>()
            .IncludeMembers(src => src.Inner) // 优先使用Inner对象的映射规则填充属性
            .ForMember(dest => dest.MyBool, opt => opt.MapFrom(src => src.MyCount > 0));
    }
}

原理说明

  • IncludeMembers会让AutoMapper先尝试用指定的嵌套对象(src.Inner)的映射规则填充目标属性,覆盖默认的同名属性匹配逻辑。
  • 手动配置的MyBool属性规则优先级更高,能确保自定义的MyCount转MyBool逻辑正常生效。

验证结果

修改后运行单元测试,所有断言均会通过:

  • dest.MyBool.Should().BeTrue() 保持通过
  • dest.MyProperty1.Should().Be(1) 成功映射为1
  • dest.MyProperty2.Should().Be(2) 成功映射为2

内容的提问来源于stack exchange,提问作者Adam Schaff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:43:25