Я только начинаю с DI и модульного тестирования и попал в ловушку, которая, я уверен, не составляет труда для более опытных разработчиков:
У меня есть класс под названием MessageManager, который получает данные и сохраняет их в БД. В той же сборке (проект в Visual Studio) я создал интерфейс репозитория со всеми методами, необходимыми для доступа к БД.
Конкретная реализация этого интерфейса находится в отдельной сборке под названием DataAccess.
Таким образом, для DataAccess необходима ссылка на проект MessageManager, чтобы узнать об интерфейсе хранилища.
А MessageManager нужна ссылка на проект для DataAccess, чтобы клиент MessageManager мог внедрить конкретную реализацию интерфейса репозитория.
Это конечно не разрешено
Я мог бы переместить интерфейс в сборку доступа к данным, но я считаю, что интерфейс хранилища должен находиться в той же сборке, что и клиент, который его использует
Так что я сделал не так?