Automapper и SimpleInjector с использованием WebApiRequestLifestyle

Я вставляю Automapper (последняя версия от Nuget) в свой проект (WebApi2, framework 4.5.1) и использую SimpleInjector (последняя версия от Nuget).

Моя проблема в том, что до использования Automapper все работало. Теперь я не уверен, почему он говорит мне, что обратное отображение отсутствует (когда я знаю, что оно не нужно для вызываемой службы).

Я использую интерфейс IMappingEngine.

У меня есть класс AutoMapperConfig со всеми Mapper.CreateMap

Пример AutoMapperConfig

public static class AutoMapperConfig 
{
    public static void Configure(IMappingEngine mappingEngine)
    {
        Mapper.CreateMap<Entity, EntityModel>()
        ...
    }
}

Причина, по которой AutoMapperConfig.Configure получает IMappingEngine, заключается в том, что некоторые атрибуты сопоставлений имеют другие сопоставления внутри. Например (фрагмент кода):(Обратите внимание на Mapper.Map внутри Mapper.CreateMap)

 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 ответов

Другие вопросы по тегам