AutoMapper 是.NET 平台上最流行的对象与对象之间映射的类库,该类库最近更新到 3.3 版本。新版本中加入了许多新特性,包括对开放式泛型以及回调的支持。不出意外的话, AutoMapper 3.3 应该是 3.x 系列的最后一次更新了。
自定义目标类型的构造函数
这一特性允许开发者传入一个 lambda 表达式,用以实现自定义的构造函数调用。通常来说,这一特性并非必需,因为AutoMapper 本身就能够将源类型的属性映射为构造函数的参数。按照文档所说,“除非AutoMapper 不能够正确地对目标类型的构造函数进行映射,或者是需要在构造函数执行过程中进行某些自定义操作,否则无需使用这一方法。”
开放式泛型
开放式泛型是指,对于List
Mapper.CreateMap(typeof(List<>), typeof(ObservableCollection<>));
## 映射操作运行前后
新版本允许为映射操作添加回调方法,这些方法的执行时机是在某个对象即将被映射之前,或是该对象刚刚被映射之后。在新版本的文档所提供的示例中,目标对象的 Name 属性被设置为 HttpContext.Current.Identity.Name 的值,而不是来自于源对象的任何属性。
替换成员名称
在新版本中,你不仅能够替换整个成员的名称,还可以替换成员名称中的个别字符,例如将加了重音é符号替换为不加修饰的 e。无论在成员的名称中是否存在这一字符,映射过程中总会执行这一操作。
其它特性
- 支持 LINQ 类型转换过程中的字符串转换
- 在使用 Web API 的过程中,进行类型转换的成员展开时能够使用额外的方法进行控制
- 在对 IQueryable 类型进行转换时,能够将其中的 enum 类型正确地映射到字符串类型了
- 允许参数化的 LINQ 查询
- 支持对表达式树进行转换
- 配置变更:允许对 public 及 internal 属性进行映射
评论