c# - AutoMapper - 为什么使用 Map 而不是 DynamicMap?

标签 c# automapper

假设您使用 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 。

这也是一个性能问题,因为 DynamicMapMap 方法更频繁地使用反射,因为您已经指定了映射配置,而且大部分都不必指定蜜蜂在飞行中断言了。不确定新版本的 Automapper 现在是否在这方面执行缓存。

关于c# - AutoMapper - 为什么使用 Map 而不是 DynamicMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740362/

相关文章:

c# - 如何使用 AutoMapper 的新 API 映射到现有实例?

c# - Web API2 NinjectWebCommon.cs 没有出现

c# - 从名称为 ID 的 json 对象创建一个强类型的 c# 对象

c# - 一对多关系映射 : Cannot add or update a child row: a foreign key constraint fails

c# - 如何在 Azure 托管的 Silverlight 中上传文件?

c# - AutoMapper - 将 Json 字符串属性映射到基于接口(interface)的对象

Automapper,将单个目标属性映射为多个源属性的串联

c# - 当一个事件有多个订阅者时,如何获取每个订阅者的返回值?

c# - 如何为 .net 3.5 安装 Automapper

c# - 自动映射器在继承类型之间进行映射的意外行为