Использование зависимых сервисов в профиле AutoMapper - PullRequest
0 голосов
/ 23 октября 2019

У меня есть метод AfterMap, который должен использовать контекст, чтобы изменить EntityState некоторых элементов, а также использовать внедренный экземпляр Mapper для отображения связанных данных поверх существующих данных в качестве модификации, а не дополнения.

Моя проблема в том, что я не могу получить инъекцию зависимостей внутри профиля. Если я определяю профиль следующим образом:

public MyProfile(IMapper mapper, MyContext context)

При попытке добавить профиль возникает ошибка, что нет конструктора без параметров. Моя конфигурация при запуске выглядит следующим образом:

var mapperConfig = new MapperConfiguration(cfg => {
                cfg.AddMaps("MYAPP");
            });
            services.AddSingleton<IMapper>(x => mapperConfig.CreateMapper());

Как я могу внедрить зависимости в эти профили для использования в моих методах AfterMap.

Пример профиля для справки:

public class MyProfile : Profile {
IMapper _mapper;
MyContext _context;
public MyProfile(IMapper mapper, MyContext context) {
_mapper = mapper;
_context = context;

CreateMap<Thing1, Thing2>()
        .ForMember(d => d.IncidentCauseSubTypes, o => o.Ignore())
        .AfterMap((src, dest) => MergeRelatedLists(Things1, Thing2, _mapper, _context));
}

}
...