假设您使用AutoMapper进行映射的对象不需要自定义映射,那么执行此操作是否有意义:
Mapper.CreateMap<Src, Dest>();
// ....
Mapper.Map(SrcObject, DestObj);
如果不需要自定义映射,上述方法是否只需使用DynamicMap就可以获得任何优势而无需任何先前的配置?
Mapper.DynamicMap(SrcObject, DestObj);
我确实理解当您映射匿名类型时DynamicMap
必需,但我问的是DyanmicMap
是否不首选对于不需要自定义映射的静态类型。
答案 0 :(得分:16)
自从我上次使用Automapper以来已经有一段时间了,但如果我没记错的话:
要使用Map
,您需要先通过CreateMap
明确指定这些地图。之后,您可以致电AssertConfigurationIsValid
验证您的配置。
这是在启动应用程序之后发生的,而不是在执行期间遇到错误(假设你创建了映射并在启动时验证,这是推荐的)。
还有一些类型与1:1不匹配,因此您需要指定确切的映射,不确定DynamicMap
是否使用了您手动引入的地图,实际上我认为它不是击>
刚刚检查过,DynamicMap
会回退到github上当前版本的现有地图。
这也是性能问题,因为DynamicMap
比Map
方法更多地使用反射,因为您已经指定了映射配置,并且大部分都不必在运行时断言。不过现在不确定新版本的Automapper是否正在执行这方面的缓存。