(Этот вопрос конкретно в C #, но в целом относится к .NET)
У меня большое приложение, которое имеет довольно хороший дизайн и разбито на основные разделы по интерфейсам (это было сделано, чтобы помочь параллельной разработке).
Теперь у нас есть первичный набор конкретных классов, которые реализуют необходимые интерфейсы, но у нас также есть дополнительные наборы конкретных классов для альтернативных ситуаций и тестирования.
На данный момент мы объединяем все эти классы на верхнем уровне в коде:
IMyInterface xComponent = new ConcreteXComponent1();
Если я хочу поменять компоненты, мне нужно только изменить эту строку и перекомпилировать:
// IMyInterface xComponent = new ConcreteXComponent1();
IMyInterface xComponent = new ConcreteXComponentAlternative();
Это прекрасно работает, но, очевидно, требует перекомпиляции - я бы предпочел, чтобы конкретный класс был выбран с использованием значения из файла конфигурации.
Какой стандартный шаблон для изменения конкретных классов с использованием файла конфигурации? Есть ли стандартная библиотека, которую я могу использовать, чтобы решить эту проблему для меня?
Спасибо!