【问题标题】:Is there any advantage to using Mapper vs Implicit Operators?使用 Mapper 与隐式运算符有什么优势吗?
【发布时间】:2013-03-10 18:00:26
【问题描述】:

映射器自动映射:

Mapper.CreateMap<ObjectType1, ObjectType2>()
    .ForMember(o1 => o1.PropName, mapper => mapper.MapFrom(o2 => o2.Prop2Name));

Mapper.Map(object1, object2);

隐式运算符:

public static implicit operator Object1(Object2 o2)
{ 
    Object1 o1 = new Object2(); 
    //Mapping code here...
    return o1;
}

【问题讨论】:

  • 我不久前读过这个。 stackoverflow.com/questions/13053590/…
  • 快速预览@ChristianLennartsson 的链接... 使用 EmitMapper:Auto Mapper(简单):38483 毫秒,Emit Mapper(简单):118 毫秒,手写映射器(简单):37 毫秒。 EmitMapper 的解释:“[EmitMapper] 有效地使用 Emit 库在运行时直接在 IL 中生成映射器,就好像这些映射器是手工编写的一样。大多数其他映射器使用反射库进行映射(或源代码生成) .”显然已经有好几年了,但值得一读。

标签: c# automapper implicit-conversion implicits


【解决方案1】:

没有理由不能同时使用两者,通过从隐式运算符调用 Mapper.Map

使用 AutoMapper 可以让您依赖自动生成的映射代码,这样您就不必使用 ForMember 来单独映射每个成员。

【讨论】:

  • 性能怎么样?我认为在隐式运算符中做所有事情会更快,但我自己没有测试过。
  • 我认为 AutoMapper 会更慢,但我们谈论的是细微差别。
  • 好的。感谢您的快速回复。
猜你喜欢
  • 2015-12-27
  • 2014-12-05
  • 2015-07-20
  • 1970-01-01
  • 2016-01-09
  • 2018-10-08
  • 2012-12-09
  • 2021-07-20
  • 1970-01-01
相关资源
最近更新 更多