自动映射内部服务引用

时间:2013-10-22 19:48:46

标签: c# automapper internal valueinjecter emitmapper

我正在创建一个使用服务引用的c#库。我不希望整个服务可以在库外访问。所以我首先使用AutoMapper将我需要的服务类复制到我的库中的类似类中。第二步是使服务引用内部。我现在的主要问题是似乎没有任何支持内部访问的自动映射库。我尝试过AutoMapperEmitMapperValueInjecter个库,我复制的所有对象都有null / default值。 AutoMapper有一个github issue与支持内部相关,但没有迹象表明我们什么时候会看到它。

我决定尝试使用JSON.NET对服务类进行序列化,然后将其反序列化到库类中。这很好用,但我想知道在性能方面这与AutoMapper这样的库相比如何。我知道EmitMapper在性能方面是王道。

是否有人发现适用于内部的自动映射解决方案?

1 个答案:

答案 0 :(得分:1)

我已经创建了一个快速console program来测试每个库。

我创建了10,000个对象,这些对象具有6个设置为GUID的字符串属性。每个测试都迭代这些对象,自动将它们映射到不同类型的新对象。我为每个自动映射库运行测试10次,并以毫秒计算每个测试的平均时间跨度。

  1. EmitMapper平均时间:6.96822毫秒
  2. ValueInjector平均时间:71.87465毫秒
  3. AutoMapper平均时间:116.4615毫秒
  4. JsonMapper平均时间:154.02429毫秒
  5. 这样做的主要目的是确定使用JSON.NET是否是其他主要自动映射库的现实替代品。在前面它似乎与AutoMapper竞争,所以我想我有我的答案。