如何使用AutoMapper实现嵌套列表的多层级DTO字段映射
你只需要新增Item到OrderItem的映射配置即可,AutoMapper会自动处理列表类型的元素映射,多层嵌套字段可以直接指定完整属性路径完成映射。
完整配置如下:
var config = new MapperConfiguration(cfg => { // request到requestDTO的映射,字段同名无需手动配置,AutoMapper默认按名称匹配 cfg.CreateMap<request, requestDTO>(); // 配置列表元素Item到OrderItem的映射规则 cfg.CreateMap<Item, OrderItem>() .ForMember(dest => dest.price.total, opt => opt.MapFrom(src => src.itemPrice)) .ForMember(dest => dest.price.regular, opt => opt.MapFrom(src => src.regularPrice)); });
补充说明:
- 只要配置了单个元素的映射规则,AutoMapper会自动完成
List<Item>到List<OrderItem>的批量映射,不需要手动遍历处理。 - 请确保你的所有DTO属性都添加了
public修饰符,且嵌套类Price存在无参构造函数,否则AutoMapper无法自动初始化嵌套对象导致映射失败。 - 同名属性(比如
order、orderType、itemID)不需要显式配置映射规则,AutoMapper默认会按属性名自动匹配赋值,显式配置仅用于字段名不匹配或者有自定义转换逻辑的场景。
内容的提问来源于stack exchange,提问作者Ajay Srikanth
相关产品推荐
相关产品推荐

