Я бы определил интерфейсы в бизнес-сфере. Тогда реализации интерфейсов будут находиться в библиотеке, которая ссылается на бизнес-область (и на которую ссылается любой контекст приложения, или на библиотеку IoC, на которую ссылается контекст приложения).
Тогда замена одной реализации на другую - это просто создание другой библиотеки и замена ссылки в контексте приложения.
В структуре проекта .NET это будет выглядеть примерно так:
Проект доменной логики
(ничего не указывает)
Доменные модели
Интерфейсы репозитория
Интерфейс IoC Service Locator
Репозиторий Проект
(Ссылки на проект «Доменная логика»)
Реализация репозитория
Проект IoC
(Ссылки на проект «Доменная логика»)
(Проект репозитория ссылок)
Внедрение локатора служб IoC
IoC Bootstrapping
Заявочный проект
(Ссылки на проект IoC)
(Ссылки на проект «Доменная логика»)
(Может понадобиться ссылка на проект репозитория, не уверен)
Реализует пользовательский интерфейс, который взаимодействует с моделями доменов