C#怎么使用AutoMapper C#对象映射库AutoMapper教程

畫卷琴夢
发布: 2025-12-12 16:58:02
原创
363人浏览过
AutoMapper 是 C# 中用于 DTO 与实体间映射的主流库,通过 Profile 配置和 IMapper 接口实现类型安全、可维护的自动映射,推荐使用依赖注入注册并启用 AssertConfigurationIsValid 验证。

c#怎么使用automapper c#对象映射库automapper教程

AutoMapper 是 C# 中最常用的对象映射库,用来简化两个不同结构的类(比如 DTO 和实体)之间的属性赋值。它不靠反射硬编码,而是通过配置一次、复用多次,让代码更干净、可维护性更高。

安装和基础配置

在 .NET 项目中,用 NuGet 安装 AutoMapper:

  • Package Manager:`Install-Package AutoMapper`
  • CLI:`dotnet add package AutoMapper`

从 AutoMapper 12.0 开始,推荐使用 MapperConfiguration + IMapper 方式(替代旧版静态 Mapper)。在 Startup 或 Program.cs 中注册:

var mappingConfig = new MapperConfiguration(mc =>
{
    mc.CreateMap<User, UserDto>();
    mc.CreateMap<UserDto, User>();
});
var mapper = mappingConfig.CreateMapper();
登录后复制

如果是 ASP.NET Core 项目,更推荐用依赖注入方式注册:

services.AddAutoMapper(typeof(Program)); // 扫描 Program 类所在程序集中的 Profile
登录后复制

用 Profile 组织映射规则

把映射逻辑集中管理,避免配置散落在各处。新建一个继承 Profile 的类:

public class UserMappingProfile : Profile
{
    public UserMappingProfile()
    {
        CreateMap<User, UserDto>()
            .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.FirstName} {src.LastName}"))
            .ForMember(dest => dest.Age, opt => opt.MapFrom(src => DateTime.Now.Year - src.BirthDate.Year));
<pre class="brush:php;toolbar:false;">    CreateMap<UserDto, User>()
        .ForMember(dest => dest.BirthDate, opt => opt.Ignore()); // 忽略不映射的字段
}
登录后复制

}

Picit AI
Picit AI

免费AI图片编辑器、滤镜与设计工具

Picit AI 195
查看详情 Picit AI

Profile 会自动被 AddAutoMapper 发现并加载,无需手动添加。

执行映射操作

注入 IMapper 后直接调用:

  • mapper.Map<userdto>(user)</userdto> —— 对象转 DTO
  • mapper.Map(userDto, user) —— 更新已有对象(目标对象不为空)
  • mapper.Map<list>>(users)</list> —— 集合映射(自动识别泛型)

注意:AutoMapper 默认按属性名匹配(忽略大小写),同名且类型兼容的字段自动复制;类型不一致或名称不同需用 ForMember 显式配置。

常见问题与建议

映射失败时不会抛异常,但可能静默跳过字段。建议开发阶段开启验证:

var config = new MapperConfiguration(c => c.AddProfile<UserMappingProfile>());
config.AssertConfigurationIsValid(); // 启动时检查映射是否合法
登录后复制
  • 避免在映射中调用数据库或耗时操作,保持纯数据转换
  • 敏感字段(如密码)记得用 Ignore()MapFrom(x => null)
  • 复杂嵌套对象支持深度映射,但要确保所有中间类型都有对应 CreateMap

基本上就这些。用熟了 Profile + IMapper,日常 DTO 转换几行代码搞定,不复杂但容易忽略验证和命名约定。

以上就是C#怎么使用AutoMapper C#对象映射库AutoMapper教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号