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

C# 如何使用 AutoMapper 实现嵌套数组结构的对象正确映射

问题原因

你遇到的resolve to top-level member报错核心是AutoMapper的ForMember仅支持映射目标类型的顶级成员,不允许直接指定多层嵌套属性路径(如dest.Geo.Location属于非法写法),因此嵌套层级的对象/数组映射需要逐层配置规则。

正确映射配置

你需要补充基础元素映射、逐层配置嵌套对象的映射规则,完整配置如下:

// 1. 基础字段匹配映射:Address 和 Location 结构一致,Street字段名相同,可自动映射
CreateMap<Address, Location>();

// 2. 书店层级映射:Bookstore -> Store
CreateMap<Bookstore, Store>()
    // 直接映射Store的顶级成员Geo,构造Geo对象并为内部Location赋值
    .ForMember(dest => dest.Geo, o => o.MapFrom(src => new Geo
    {
        Location = src.Address
    }));

// 3. 根对象映射:Source -> Target
CreateMap<Source, Target>()
    .ForMember(dest => dest.Book, o => o.MapFrom(src => src.BookName))
    // 单个元素映射规则存在时,AutoMapper会自动处理数组映射,此处显式写更清晰
    .ForMember(dest => dest.Store, o => o.MapFrom(src => src.BookStore));
映射验证

配置完成后调用mapper.Map<Target>(sourType)即可得到你预期的Target结构,Geo、Location数组都会正常赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:45:00