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

Automapper从v3.3.1升级到v10.0.0:IgnoreUnMapped方法适配问题

AutoMapper v10 适配版 IgnoreUnMapped 扩展方法

原方法在AutoMapper v10中失效,核心原因是静态API被废弃、TypeMap相关方法发生变更,以下是适配v10版本的实现:

// 忽略所有原本会通过默认规则映射的目标属性,仅保留显式配置的映射
public static IMappingExpression<TSource, TDestination> IgnoreUnMapped<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
    var configProvider = expression.ConfigurationProvider;
    // 获取或创建对应的TypeMap
    var typeMap = configProvider.FindTypeMapFor<TSource, TDestination>() 
                  ?? configProvider.CreateTypeMap<TSource, TDestination>();

    foreach (var propertyMap in typeMap.GetPropertyMaps())
    {
        // 筛选出:会被默认映射 + 无自定义配置的属性,进行忽略
        if (propertyMap.IsMapped && !propertyMap.HasCustomMap())
        {
            expression.ForMember(propertyMap.DestinationMember.Name, opt => opt.Ignore());
        }
    }

    return expression;
}

关键变更说明

  • 废弃旧版静态Mapper.FindTypeMapFor,改为从当前映射表达式的ConfigurationProvider获取配置上下文,符合AutoMapper v8+推荐的非静态API规范
  • 用GetPropertyMaps()替代旧版的GetCustomPropertyMaps(),这是v4之后TypeMap属性映射集合的标准获取方式
  • 通过IsMapped判断属性是否会被默认规则映射,HasCustomMap()判断是否存在显式自定义映射配置,两者结合精准筛选需要忽略的属性

使用注意

配置映射时,必须先定义所有显式的ForMember映射规则,再调用IgnoreUnMapped,否则你的显式配置会被覆盖忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:30:49