AutoMapper - 为何使用Map over DynamicMap?

时间:2012-03-16 15:44:43

标签: c# automapper

假设您使用AutoMapper进行映射的对象不需要自定义映射,那么执行此操作是否有意义:

Mapper.CreateMap<Src, Dest>(); 
// ....
Mapper.Map(SrcObject, DestObj);

如果不需要自定义映射,上述方法是否只需使用DynamicMap就可以获得任何优势而无需任何先前的配置?

Mapper.DynamicMap(SrcObject, DestObj);

我确实理解当您映射匿名类型时DynamicMap 必需,但我问的是DyanmicMap是否不首选对于不需要自定义映射的静态类型。

1 个答案:

答案 0 :(得分:16)

自从我上次使用Automapper以来已经有一段时间了,但如果我没记错的话:

要使用Map,您需要先通过CreateMap明确指定这些地图。之后,您可以致电AssertConfigurationIsValid验证您的配置。

这是在启动应用程序之后发生的,而不是在执行期间遇到错误(假设你创建了映射并在启动时验证,这是推荐的)。

还有一些类型与1:1不匹配,因此您需要指定确切的映射,不确定DynamicMap是否使用了您手动引入的地图,实际上我认为它不是
刚刚检查过,DynamicMap会回退到github上当前版本的现有地图。

这也是性能问题,因为DynamicMapMap方法更多地使用反射,因为您已经指定了映射配置,并且大部分都不必在运行时断言。不过现在不确定新版本的Automapper是否正在执行这方面的缓存。