Автоматическое сопоставление внутренних ссылок на службы

Я создаю библиотеку С#, которая использует ссылки на службы. Я не хочу, чтобы весь сервис был доступен за пределами библиотеки. Поэтому я сначала использовал AutoMapper, чтобы скопировать нужные мне классы обслуживания в аналогичные классы в моей библиотеке. Вторым шагом было сделать ссылки на службы внутренними. Моя главная проблема сейчас заключается в том, что, похоже, не существует библиотек автоматического сопоставления, поддерживающих внутренний доступ. Я пробовал AutoMapper, EmitMapper и ValueInjecter и все мои скопированные объекты имеют значения null/значения по умолчанию. У AutoMapper есть проблема с github, связанная с поддержкой внутреннего, но нет указаний, когда мы решим видеть это.

Я решил попробовать нечто странное: сериализовать класс службы с помощью JSON.NET, а затем десериализовать. это в библиотечном классе. Это работает довольно хорошо, но мне интересно, как это сравнивается с такими библиотеками, как AutoMapper, с точки зрения производительности. Я знаю, что EmitMapper является королем производительности.

Кто-нибудь нашел решение для автоматического сопоставления, которое работает для внутренних органов?


person pixelshaded    schedule 22.10.2013    source источник


Ответы (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, поэтому я думаю, что у меня есть ответ.

person pixelshaded    schedule 22.10.2013