自动映射内部服务引用

本文关键字:服务 引用 内部 映射 | 更新日期: 2023-09-27 18:36:24

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

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

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

自动映射内部服务引用

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

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

  1. 发射映射器平均时间:6.96822毫秒
  2. 值注入器平均时间:71.87465
  3. 毫秒
  4. 自动映射器平均时间:116.4615
  5. 毫秒
  6. JsonMapper 平均时间:154.02429 毫秒

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