Предположим, у меня есть проект A, который ссылается на проект B. B имеет некоторые классы, определенные в нем, а A имеет интерфейс ISomething, реализация которого находится в A и использует классы B. Затем я хочу создать проект C и другую реализацию интерфейса A, которая использует классы C. Вот проблема: я хочу переместить реализации этого интерфейса в соответствующие проекты, чтобы я мог определить, какой проект я хочу использовать в скрипте сборки, и опустить другие. Тем не менее я хочу сохранить связь между интерфейсом и его реализацией ради тонны уже существующего кода, который использует этот интерфейс. До сих пор я размышлял над следующими опциями:Разделительные интерфейсы и реализации
- Использовать шаблон адаптера в проекте A, который возвращает ISomething, ссылается на обе реализации и адаптирует реализацию B, если C отсутствует, и наоборот. Кон, что делает все отношения между интерфейсом и реализацией бесполезными с моей точки зрения
- Создайте проект D, который содержит интерфейс и на который ссылаются A, B и C, а затем разрешите в этом проекте интерфейс с одной из его реализаций , Проект получает конкретный экземпляр и работает с ним. Кон, что мне нужно создать другую библиотеку и загрязнить репозиторий.
Какой вариант лучше и есть ли другие?
Вам нужно продолжать реализацию в отдельных проектах по какой-то причине? т. е. не хотите, чтобы этот код существовал в определенных сборках? –
Мой главный проект предназначен для нескольких платформ, и я использую скрипт для генерации определенных файлов решений в зависимости от параметров, с которыми выполняется этот скрипт. Я хочу определить новый параметр, который укажет, какой проект я хочу использовать в решении (B или C), поэтому я хочу переместить реализации в отдельные проекты –