使用WebApiRequestLifestyle的Automapper和SimpleInjector

时间:2015-11-04 23:39:43

标签: automapper simple-injector automapper-4

我正在将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);

然后每个控制器接收IMappingEngine并使用:

MappingEngine.Map

有什么遗漏或错误吗?

提前致谢!吉列尔莫。

0 个答案:

没有答案