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

C# 使用AutoMapper映射时如何忽略子对象的嵌套子属性

问题原因

你当前的ForPath写法失效,是因为AutoMapper处理深层嵌套路径的忽略规则时,若上层嵌套成员(这里指Child属性)的映射规则没有显式声明,会直接中断整个上层成员的映射,所以导致整个Child对象没有被正常映射。

解决方法

方案1:单独配置Child类型映射(推荐)

这是最符合AutoMapper最佳实践的写法,复用性高,所有Child到Child的映射都会自动忽略InnerChild:

// 配置Child类型的自映射,显式忽略InnerChild属性
CreateMap<Child, Child>()
    .ForMember(dest => dest.InnerChild, opt => opt.Ignore());

// Parent到ParentMap的映射无需额外配置,会自动套用上面的Child映射规则
CreateMap<Parent, ParentMap>();

方案2:用AfterMap针对性处理

如果仅需要本次映射忽略Child.InnerChild,不想全局配置Child映射,可以在映射完成后手动赋值:

CreateMap<Parent, ParentMap>()
    .AfterMap((src, dest) => 
    {
        if (dest.Child != null)
        {
            dest.Child.InnerChild = null;
        }
    });

方案3:显式声明Child映射后再用ForPath

如果要保留ForPath的写法,只需要先显式声明Child属性的映射规则即可:

CreateMap<Parent, ParentMap>()
    .ForMember(dest => dest.Child, opt => opt.MapFrom(src => src.Child))
    .ForPath(dest => dest.Child.InnerChild, opt => opt.Ignore());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:18:00