我将 Automapper(来自 Nuget 的最新版本)插入我的项目(WebApi2,框架 4.5.1)并使用 SimpleInjector(来自 Nuget 的最新版本)。
我的问题是在使用 Automapper 之前一切正常。现在我不确定为什么它告诉我缺少反向映射(当我知道调用的服务不需要它时)。
我正在使用 IMappingEngine 接口。
我有一个包含所有 Mapper.CreateMap 的 AutoMapperConfig 类
AutoMapperConfig 示例
public static class AutoMapperConfig
{
public static void Configure(IMappingEngine mappingEngine)
{
Mapper.CreateMap<Entity, EntityModel>()
...
}
}
AutoMapperConfig.Configure 接收 IMappingEngine 的原因是某些映射属性内部有其他映射。例如(代码片段):( 注意 Mapper.CreateMap 中的 Mapper.Map)
Mapper.CreateMap<Req, ReqModel>()
.ForMember(
opt => opt.MapFrom(
src => new ServiceModel(mappingEngine)
{
Id = src.Plan.Id,
Name = src.Plan.Service.Name,
ServiceTypeId = src.Plan.Service.Type.Id,
Type = Mapper.Map<TypeModel>(src.Plan.Service.Type)
}))
在Global.asax(方法 Application_Start())中,我正在调用:
AutoMapperConfig.Configure(Mapper.Engine);
在我使用的 SimpleInjector注册中:
container.RegisterSingleton<IMappingEngine>(Mapper.Engine);
AutoMapper.Mapper.Configuration.ConstructServicesUsing(container.GetInstance);
然后每个Controller接收一个 IMappingEngine 并使用:
MappingEngine.Map
有什么遗漏或错误吗?
提前致谢!吉列尔莫。