我现在正在查找AutoMapper代码(为我正在从事的项目之一评估它),坦率地说,我很惊讶:
- 库 API 基于单个静态访问点(
Mapper
类型),因此通常它的任何方法都必须是线程安全的 - 但我没有在代码中找到任何证据。
我所能找到的只是这个问题,但即使是那里的陈述似乎也不正确:如果Map
内部不使用线程安全的数据结构,它也不能被认为是线程安全的,如果我要CreateMap
在非并发上下文中调用,但同时与Map
.
即在例如 ASP.NET MVC 应用程序中 AutoMapper 唯一可能的使用模式是:
lock (mapperLock) {
... Mapper.AnyMethod(...) ...
}
显然,如果我是正确的,那将是一个巨大的缺陷。
所以我有两个问题:
- 我对么?
- 如果是,那么没有此问题的 AutoMapper 的最佳替代方案是什么?