繁体   English   中英

使用AutoMapper的IMappingEngine和DI有什么好处(如果有的话)

[英]What are the benefits (if any) of using AutoMapper's IMappingEngine with DI

我对AutoMapper比较陌生(但已经很喜欢)并且已经通过Global.asax.cs调用的静态方法使用Mapper.CreateMap<T,T>()来声明我的映射配置文件。

但是,在阅读了有关AutoMapper的更多信息之后,我还注意到了使用IoC容器(在我的情况下是StructureMap)和DI注入IMapperEngine接口的选项,这IMapperEngine我想知道除了那些之外我会得到什么(如果有的话)这些额外的好处在使用依赖注入 (模拟,控制反转等)时获得。

例如,IMapperEngine的使用是否会延迟加载配置文件,直到它们被使用或我完全脱离标记?

我对AutoMapper相对较新(但已经非常喜欢)并且已经通过Global.asax.cs中调用的静态方法使用Mapper.Map声明了我的映射配置文件。

我希望你不是那样做的。 Mapper.Map方法用于执行对象实例之间的实际映射。 您应该在Global.asax.cs是使用Mapper.CreateMap静态方法定义映射。

现在,就您对IMapperEngine接口的问题而言,最好始终使用代码中的抽象。 在您的控制器操作中,您将不再使用Mapper.Map静态方法调用进行硬编码,而是使用您可以在单元测试中模拟的抽象。 没有其他显着的好处。

使用此界面不会推迟任何事情。 如果您注入了具体的Mapper.Engine实例,那么在调用IMapperEngine.Map方法时IMapperEngine.Map就是调用底层的Mapper.Engine.Map方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM