Я пытаюсь зарегистрировать свой AutoMapper (версия 5.2.0) Профиль класса в мой контейнер Unity (Unity версия 4.0.1), и это дает мне исключение:AutoMapper Единство AutoMapper.IConfigurationProvider Выпуск
Постановление ошибка отсутствует, type = IConsumer`1 [Commands.INewUserEmailCommand] ", name =" (none) ". Исключение произошло, когда: при разрешении. Исключение: InvalidOperationException - текущий тип, AutoMapper.IConfigurationProvider, является интерфейсом и не удалось построить. Вам не хватает картирования типа?
Категория:
public class AutoMapperBootstrap : Profile
{
public AutoMapperBootstrap()
{
this.CreateMap<IUserEmailDTO, MergeUserEmailRequest>();
}
}
А вот Unity регистрация сниппет:
Profile typeMaps = new AutoMapperBootstrap();
var config = new MapperConfiguration(cfg => cfg.AddProfile(typeMaps));
container.RegisterInstance<IMapper>(config.CreateMapper(), new ContainerControlledLifetimeManager());
Тогда у меня есть конструкторы, которые зависят от экземпляра IMapper впрыскивают, по-видимому Unity ничего не знает о или нужен дополнительный экземпляр IConfigurationProvider? Что мне не хватает? Когда мой код должен вызывать службу, которая полагается на IMapper, Unity выбрасывает исключение выше. Ниже приведен пример службы, использующей инъекцию конструктора, которая пытается получить экземпляр IMapper.
public class FooService : IFooService
{
private readonly IMapper mapper;
public Foo(IMapper mapper)
{
this.mapper = mapper;
}
}
Должен ли я просто пропустить регистрацию контейнера и использовать статический экземпляр, который имеет все сопоставления? Я думаю, что статический конструктор инициализирует мой профиль, чтобы он всегда был доступен ... – Andy