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

C# AutoMapper 如何实现对象内部嵌套对象的映射

C# AutoMapper 嵌套对象映射配置方案

你当前提供的实体类存在两处问题:

  • 重复定义了Date类
  • Update、Update11类中未声明嵌套对象属性,无法直接实现嵌套映射,我们先假设你实际的实体结构为以下包含嵌套属性的版本:
// 示例源实体结构
public class Update
{        
    public string aa { get; set; }               
    // 嵌套的自定义类型属性
    public Date CreateDate { get; set; }
}

public class Date
{
    public DateTime ww { get; set; }        
}

// 示例目标实体结构
public class Update11
{
    public string aa { get; set; }        
    // 对应的嵌套自定义类型属性
    public Date CreateDate { get; set; }
}

配置调整步骤

  1. 添加嵌套类型的映射配置
    如果你的源和目标实体引用的Date是不同命名空间下的两个独立类,需要先添加Date类型的双向映射:
// 假设源Date在Domain命名空间,目标Date在Dto命名空间,按需替换为你实际的类型
CreateMap<Domain.Date, Dto.Date>().ReverseMap();
// ReverseMap() 是AutoMapper提供的快捷方法,等价于同时写正向和反向两行CreateMap

如果源和目标共用同一个Date类,可跳过这一步。

  1. 同名嵌套属性自动映射
    如果嵌套属性的名称在源和目标实体中完全一致(比如都叫CreateDate),不需要额外修改你已经配置的Update和Update11的映射规则,AutoMapper默认会自动递归处理嵌套属性的映射。

  2. 异名嵌套属性手动指定
    如果嵌套属性名称不一致,比如Update里叫CreateDate,Update11里叫OperateDate,需要用ForMember手动指定映射关系:

CreateMap<Update, Update11>()
    .ForMember(dest => dest.OperateDate, opt => opt.MapFrom(src => src.CreateDate))
    .ReverseMap();

功能验证

配置完成后直接调用映射方法即可,示例:

var source = new Update
{
    aa = "测试内容",
    CreateDate = new Date { ww = DateTime.Now }
};
// 映射后target.OperateDate.ww会自动匹配source.CreateDate.ww的值
var target = _mapper.Map<Update11>(source);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:24:05