Проблемы с Automapper IMapper при использовании Dependency Resolver - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь использовать autopper и у меня возникают некоторые проблемы при попытке разрешить объект сопоставления.

Это код

 public class MapAdapter : IMyMapper
 {
        private readonly AutoMapper.IMapper _mapper;

        public MapAdapter(AutoMapper.IMapper mapper)
        {
            _mapper = mapper;
        }

public TDest Map<TSource, TDest>(TSource source)
        {
            try
            {
                return _mapper.Map<TSource, TDest>(source);
            }
            catch (Exception exception)
            {
                throw;
            }
        }
}

И это исключение

Произошло необработанное исключение при обработке запроса.InvalidOperationException: невозможно разрешить службу для типа «AutoMapper.IMapper» при попытке активировать «Infrastructure.Mapper.Adapter.MapAdapter».

Если я удалю зависимость AutoMapper.Mapper из конструктора

public MapAdapter()

все работает, кроме поля Automapper _mapper, которое, конечно, равно нулю

Это конфигурация DI, где IMyMapper - мой интерфейс, а MapAdapter - реализация IMyMapper

_serviceCollection.AddTransient<IMyMapper, MapAdapter>();

У меня есть профиль сопоставления, который пуст

  public class OrderDataMappingProfile : Profile
    {
        public OrderDataMappingProfile()
        {
        }
    }

Есть идеи, почему это не удается?

1 Ответ

0 голосов
/ 23 сентября 2018

Эта ошибка возникает из-за того, что вы не зарегистрировали преобразователь, который должен быть разрешен в интерфейсе IMapper в коллекции служб.

Чтобы решить эту проблему, добавьте профиль сопоставления в новую конфигурацию сопоставителя, а затем создайтеКартограф от этого и привязать его к коллекции.

var config = new AutoMapper.MapperConfiguration(cfg =>
{
    cfg.AddProfile(new OrderDataMappingProfile ());
});
var mapper = config.CreateMapper();
_serviceCollection.AddSingleton(mapper);
...