Я просматриваю AutoMapper код (оценивая его для одного из проектов, над которыми я работаю), и, честно говоря, Я очень удивлен:
- API-интерфейс библиотеки основан на единой статической точке доступа (тип
Mapper
), поэтому, как правило, любой из ее методов должен быть потокобезопасным - Но я не нашел никаких доказательств этого в коде.
Все, что мне удалось найти, это этот вопрос, но даже сделанное утверждение кажется неправильным: if Map
не использует поток -сохраняемые структуры данных, они не могут рассматриваться как поточно-безопасные, если я собираюсь называть CreateMap
в неконкурентном контексте, но одновременно с Map
.
т.е. единственный возможный шаблон использования AutoMapper, например. Приложение ASP.NET MVC:
lock (mapperLock) {
... Mapper.AnyMethod(...) ...
}
Очевидно, если я прав, это огромный недостаток.
У меня есть два вопроса:
- Правильно ли я?
- Если да, то какая лучшая альтернатива AutoMapper, которая не имеет этой проблемы?