我对AutoMapper比较陌生(但已经很喜欢)并且已经通过Mapper.CreateMap<T,T>()
中调用的静态方法使用Global.asax.cs
来声明我的映射配置文件。
然而,在阅读了有关AutoMapper的更多内容之后,我还注意到了使用IoC容器(在我的情况下是StructureMap)和DI注入IMapperEngine
接口的选项,让我想知道什么(如果有的话)额外的好处除了那些在使用依赖注入(模拟,控制反转等)时获得的,这将呈现给我
例如,使用IMapperEngine是否会延迟加载配置文件,直到它们被使用或者我完全没有标记?
答案 0 :(得分:4)
我对AutoMapper相对较新(但已经爱过它)并且一直都是 通过静态方法使用Mapper.Map声明我的映射配置文件 在Global.asax.cs中调用。
我希望你不是那样做的。 Mapper.Map
方法用于执行对象实例之间的实际映射。您应该在Global.asax.cs
中执行的操作是使用Mapper.CreateMap
静态方法定义映射。
现在,关于IMapperEngine
接口的问题,最好始终使用代码中的抽象。在您的控制器操作中,您将不再对Mapper.Map
的静态方法调用进行硬编码,而是使用您可以在单元测试中模拟的抽象。没有其他显着的好处。
使用此界面不会推迟任何事情。如果您注入了具体的Mapper.Engine
实例,那么当您调用IMapperEngine.Map
方法时,您正在执行的操作就是调用基础Mapper.Engine.Map
方法。