Лучше вообще асбтрагироваться, родить что нибудь типа MapperService.Map<TFrom, TTo>(TFrom source) и IMapper<TFrom, TTo> и на реализации интерфейса наделать маппингов, а в сервисе логику выбора маппинга с кешированием. Automapper на любом большом проекте сколько видел всегда приводит к тому, что рефакторить больно, трудно, хер пойми где выстрелит; async нельзя, а регулярно надо хоть как костыль, хоть как быструю фичу(ну вот есть у меня feature toggle сервис, он async методы имеет, в маппер не могу); мнимое ощущение экономии времени на том, что маппинг не руками как обезъяна писал, а как член high iq society вызывал Mapper.Map. Оно может и про неправильное использование маппера, но реальность вот такая вот.
Согласен, лучше абстрагироваться, но по иным причинам. Вопрос №1 А от чего тебя защищает Map<TFrom, TTo> вместо Map<TTo> ?(Дурак и так тип запишет, если не хочет убедиться в его регистрации, или рефакторинг? ну что-то смутно себе представляю) №2 а как вообще он связан с асинхроном, о чём речь?