假设您使用 AutoMapper 映射的对象不需要自定义映射,这样做是否有意义:
Mapper.CreateMap<Src, Dest>();
// ....
Mapper.Map(SrcObject, DestObj);
如果不需要自定义映射,与仅使用 DynamicMap 而无需任何预先配置相比,上述方法对您有什么好处吗?
Mapper.DynamicMap(SrcObject, DestObj);
我知道当你映射匿名类型时 DynamicMap
是必需的,但我想问的是 DyanmicMap
是否曾经 < em>不推荐不需要自定义映射的静态类型。
最佳答案
自从我上次使用 Automapper 以来已经有一段时间了,但如果我没记错的话:
为了使用Map
,您需要先通过CreateMap
明确指定那些Map。之后,您可以通过调用 AssertConfigurationIsValid
来验证您的配置。
这会在启动您的应用程序后立即发生,而不是在执行过程中遇到错误(假设您创建了映射并在启动时进行了验证,这是推荐的做法)。
还有一些类型不匹配 1:1,所以你会想要指定确切的映射,不确定 DynamicMap
是否使用你手动引入的 map ,实际上我认为它没有。
刚刚检查过,DynamicMap
回退到 github 上当前版本的现有 map 。
这也是一个性能问题,因为 DynamicMap
比 Map
方法更频繁地使用反射,因为您已经指定了映射配置,而且大部分都不必指定蜜蜂在飞行中断言了。不确定新版本的 Automapper 现在是否在这方面执行缓存。
关于c# - AutoMapper - 为什么使用 Map 而不是 DynamicMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740362/