AutoMapper – 为何使用Map over DynamicMap?

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

Mapper.CreateMap(); // .... Mapper.Map(SrcObject, DestObj); 

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

 Mapper.DynamicMap(SrcObject, DestObj); 

我确实理解在映射匿名类型时需要 DynamicMap ,但我问的是DyanmicMap是否不适用于不需要自定义映射的静态类型。

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

要使用Map ,您需要首先通过CreateMap明确指定这些Maps。 之后,您可以通过调用AssertConfigurationIsValid来validation配置。

这种情况发生在启动应用程序之后,而不是在执行期间遇到错误(假设您在启动时创建映射并进行validation,建议这样做)。

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

这也是一个性能问题,因为DynamicMap使用的reflection比Map方法更重要,因为你已经指定了映射配置,并且大部分都不需要动态断言。 现在不确定新版本的Automapper是否正在进行这方面的缓存。