想要使用AutoMapper处理一些“猴子”代码。它对蝙蝠起作用。现在希望将所有映射都放在一个位置。所以我有:


AppStart文件夹中的静态类AutoMapperConfiguration。
我在其中调用Mapper.Initialize()的静态Configure方法。我从Global.axax.cs调用Configure()
在控制器中,我继续使用Mapper.Map(src obj,dest obj)。但是,这给了我一个Unmapped属性异常。


  当我在MappingConfiguration变量中使用CreateMap并执行iMapper.Map()时,它正在工作。这是正确的方法吗?如果是这样,如何从一个位置配置和使用它?我可以使用统一容器吗?

最佳答案

因为我不想孤立这个问题;并且为了任何(不幸的)最终解决这个问题的人的利益;这对我有用:


在AutoMapperConfiguration类的Configure()内部;而不是使用Mapper.Initialize()语法;我设置了MappingConfiguration类型的属性,例如

config = new MapperConfiguration(cfg => { cfg.CreateMap<viewModel1, entity1>(); cfg.CreateMap<viewModel2, entity2>(); etc.. });


2)下一步是从Global.asax.cs调用Configure()

这使我可以在unityConfig.cs中执行以下操作:

unityContainer.RegisterInstance<IMapper>(AutoMapperConfiguration.config.CreateMapper());


剩下的就是将IMapper实例注入到我的Controller中,并像这样使用它:

mapper.Map(src obj, dest obj);

10-04 22:57