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

AutoMapper如何在ForMember方法中实现Customer列表到CustomerDto列表的映射

AutoMapper 新版本嵌套集合映射解决方案

AutoMapper 9.x及后续版本已全面移除静态Mapper类的调用支持,你需要通过映射解析上下文获取当前映射器实例实现嵌套类型转换,具体实现步骤如下:

1. 配置类型映射

在你自定义的AutoMapper Profile类中添加如下配置:

public class CustomMappingProfile : Profile
{
    public CustomMappingProfile()
    {
        // 先配置基础元素的映射规则
        CreateMap<Customer, CustomerDto>();

        // 配置SomeType到SomeTypeDto的映射
        CreateMap<SomeType, SomeTypeDto>()
            .ForMember(
                dest => dest.SomeValues,
                opt => opt.MapFrom((src, _, _, context) => 
                    // 从上下文获取当前映射器实例,完成嵌套集合转换
                    context.Mapper.Map<List<CustomerDto>>(src.Customers)
                )
            );
    }
}

2. 原有调用逻辑无需调整

你现有的映射调用代码可以直接使用:

var result = _mapper.Map<SomeTypeDto>(someType);

执行后result.SomeValues中存储的就是转换完成的CustomerDto类型集合。

注意事项

  • 必须提前注册Customer到CustomerDto的映射规则,AutoMapper会自动处理集合内元素的逐个转换
  • 若你在ASP.NET Core等依赖注入环境中使用,需要在服务注册时引入你的Profile配置,示例:
    builder.Services.AddAutoMapper(typeof(CustomMappingProfile));
    
  • 由于SomeValues声明为List<object>类型,CustomerDto实例可隐式转换为object,无需额外强制类型转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:01