2

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

我决定尝试一些奇怪的事情,即使用JSON.NET序列化服务类,然后将其反序列化到库类中。这工作得很好,但我想知道这与 AutoMapper 等库的性能相比如何。我知道 EmitMapper 就性能而言是王道。

有没有人找到适用于内部的自动映射解决方案?

4

1 回答 1

1

我创建了一个快速控制台程序来测试每个库。

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

  1. EmitMapper 平均时间:6.96822 毫秒
  2. ValueInjector 平均时间:71.87465 毫秒
  3. AutoMapper 平均时间:116.4615 毫秒
  4. JsonMapper 平均时间:154.02429 毫秒

这样做的主要目的是确定使用 JSON.NET 是否可以替代其他主要的自动映射库。在前面,它似乎与 AutoMapper 竞争,所以我想我有我的答案。

于 2013-10-22T21:42:39.730 回答