由 Jimmy Bogard 编写的开源项目 AutoMapper 经过一年的开发之后,在近日发布了1.0 版本。AutoMapper 是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DTO,一般用于 ViewModel 模式和跨服务范畴。
AutoMapper 给用户提供了便捷的配置 API,就像使用约定来完成自动映射那样。AutoMapper 包含以下功能:
- 平展
- 投影
- 配置验证
- 列表和数组
- 嵌套映射
- 自定义类型转换程序
- 自定义值转换程序
- 自定义值格式程序
- Null 值替换
AutoMapper 是一款单向映射器。这意味着它并没有内建映射对象支持来回写至原始源,除非用户在更新映射对象之后明确地创建逆向反射。这需要通过设计完成,因为让DTO 回写到,比方说:域模型或其他东西,就会更改它的持久性,同时人们也认为它是反模式的。在这种解决方案中,命令消息在双向映射中往往是更好的选择。然而,在某些特定环境中,有人可能会为双向映射辩解,比如:非常简单的CRUD 应用程序。一个支持双向映射的框架就是 Glue 。
在 AutoMapper 的路线图上,对 Silverlight 和 Mono 的支持优先在列表中出现。同时“一流的反向映射支持”也赫然在列,故 InfoQ 询问 Jimmy 是否准备添加双向映射支持时,他回答道:
就我个人而言,我并不想支持双向映射,当然要支持该项功能确实需要 ASP.NET MVC 中有一流的 ActiveRecord 支持(这是 Rail 仍对微软解决方案在很大程度上存在影响之原因)。如果你看看 Rail 如何处理表单请求的话,你会发现它是一项非常简洁的事情。我不希望添加该项功能,因为我觉得它违背了很多设计理念,例如:POJO/POCO 和域模型模式等。然而,越来越多的人需要一份 Silverlight 的正式版本。
你认为 AutoMapper 应该添加双向映射吗?
查看英文原文: AutoMapper 1.0 For .NET Released
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论