AutoMapper 是 C# 中用于 DTO 与实体间映射的主流库,通过 Profile 配置和 IMapper 接口实现类型安全、可维护的自动映射,推荐使用依赖注入注册并启用 AssertConfigurationIsValid 验证。

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(); mc.CreateMap();});var mapper = mappingConfig.CreateMapper();
如果是 ASP.NET Core 项目,更推荐用依赖注入方式注册:
services.AddAutoMapper(typeof(Program)); // 扫描 Program 类所在程序集中的 Profile
用 Profile 组织映射规则
把映射逻辑集中管理,避免配置散落在各处。新建一个继承 Profile 的类:
public class UserMappingProfile : Profile{ public UserMappingProfile() { CreateMap() .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)); CreateMap() .ForMember(dest => dest.BirthDate, opt => opt.Ignore()); // 忽略不映射的字段}
}
Profile 会自动被 AddAutoMapper 发现并加载,无需手动添加。
执行映射操作
注入 IMapper 后直接调用:
mapper.Map(user) —— 对象转 DTOmapper.Map(userDto, user) —— 更新已有对象(目标对象不为空)mapper.Map>(users) —— 集合映射(自动识别泛型)
注意:AutoMapper 默认按属性名匹配(忽略大小写),同名且类型兼容的字段自动复制;类型不一致或名称不同需用 ForMember 显式配置。
常见问题与建议
映射失败时不会抛异常,但可能静默跳过字段。建议开发阶段开启验证:
var config = new MapperConfiguration(c => c.AddProfile());config.AssertConfigurationIsValid(); // 启动时检查映射是否合法
避免在映射中调用数据库或耗时操作,保持纯数据转换敏感字段(如密码)记得用 Ignore() 或 MapFrom(x => null)复杂嵌套对象支持深度映射,但要确保所有中间类型都有对应 CreateMap
基本上就这些。用熟了 Profile + IMapper,日常 DTO 转换几行代码搞定,不复杂但容易忽略验证和命名约定。
以上就是C#怎么使用AutoMapper C#对象映射库AutoMapper教程的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1442847.html
微信扫一扫
支付宝扫一扫