2

想使用 AutoMapper 处理一些“猴子”代码。它适用于蝙蝠;现在希望在一个地方设置所有映射。所以我有:

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

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

4

1 回答 1

3

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

  1. 在 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);
于 2017-12-21T12:08:58.623 回答