也许这是一个愚蠢的问题,但对我来说真的不明显:(
var address = new Address { Id = 1, Name = "John Doe" };
// Configure AutoMapper
Mapper.CreateMap<Address, AddressViewModel>();
// Perform mapping
var viewModel = Mapper.Map<Address, AddressViewModel>(address);
不需要Imho Mapper.CreateMap<Address, AddressViewModel>();
,因为AutoMapper会在之后获取执行映射的信息。
那么我为什么要编写这些配置?
答案 0 :(得分:5)
快速browse through the source,它似乎将它的映射存储在引擎中,以便随后的任何调用都会加载引擎中的映射数据。
这可能是因为反射可能很昂贵,并且AutoMapper无法知道有多少人或多次只使用Mapper.Map。定义:缓存:)
答案 1 :(得分:2)
如果没有别的,Automapper在执行映射时不一定会获得所有这些信息,因为您可能在CreateMap表达式中指定了任意数量的.ForMember / .AfterMap(etc)链接。您不希望在每次映射调用中都重复所有这些操作。