2

我将 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

有什么遗漏或错误吗?

提前致谢!吉列尔莫。

4

0 回答 0