Мы реализуем приложение API-интерфейса aspnetcore с использованием onion-архитектуры. У меня есть следующие звонки:
- Домен
- Приложение
- Инфраструктура
- Решитель зависимостей
Пока мы удалось сохранить все сторонние реализации на уровне инфраструктуры, вставив универсальный интерфейс c в нижние кольца, где нам нужны эти функции.
Однако теперь мы должны начать использовать AutoMapper, и вот здесь я немного запутался, как его реализовать. В нашем приложении самое низкое кольцо, где нам нужны мапперы, это кольцо приложения. Это кольцо, которое содержит все DTO. На мой взгляд, если мы придерживаемся этой архитектуры, реализация AutoMapper должна находиться на уровне инфраструктуры, и тогда мы можем внедрить ее интерфейс IMapper или обернуть этот интерфейс чуть более универсальным c интерфейсом (просто содержащим пару Map ( Методы SourceT sr c, TargetT trg) во внутреннее кольцо (кольца). Пока все хорошо. Путаница возникает, когда я думаю о конфигурации отображения. Поскольку не существует универсального c способа настройки этого отображения (CreateMap ()), похоже, что он должен быть на уровне инфраструктуры, однако, логично, если я добавляю еще один DTO в кольцо приложений, почему я должен go на уровне инфраструктуры для создания сопоставления для него. Кажется, что конфигурация должна быть в кольце приложений, но в этом случае мне придется зависеть от Automapper.
У кого-нибудь есть какие-либо предложения о том, как решить эту проблему, или я смотрю на это неправильно?