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

如何使用Automapper将UserDTO映射至带方法赋值的User类

实现UserDTO到User的映射(通过方法设置属性)

由于User类的属性仅提供私有setter,必须通过同名方法设置值,你需要在AutoMapper配置中自定义映射逻辑,使用AfterMap回调来手动调用这些方法。

修改后的Mapper配置

MapperConfiguration config = new(cfg =>
{
    cfg.CreateMap<User, UserDTO>();
    cfg.CreateMap<UserDTO, User>()
        .AfterMap((dto, user) => 
        {
            user.Name(dto.Name);
            user.Age(dto.Age);
            user.Active(dto.Active);
        });
});

原理说明

  • AfterMap会在AutoMapper完成基础映射后执行指定的回调逻辑,这里直接调用User类的设置方法,将UserDTO的属性值传递过去。
  • 无需额外忽略属性,因为AutoMapper默认无法对私有setter的属性赋值,不会产生冲突;如果担心可以显式添加.ForMember(dest => dest.Name, opt => opt.Ignore())这类配置,效果一致。

使用方式

按照你期望的方式调用即可:

userDTO.Name = "John Doe";
Mapper.Map(userDTO, user);

执行后会自动调用user.Name("John Doe")、user.Age(userDTO.Age)和user.Active(userDTO.Active)完成属性设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:15:37