.NET: выберите конкретные классы, используя файл конфигурации

(Этот вопрос конкретно в C#, но в целом относится к.NET)

У меня есть просторное приложение, которое имеет довольно хороший дизайн и разбито на основные разделы по интерфейсам (это было сделано, чтобы помочь параллельной разработке).

Теперь у нас есть основной набор конкретных классов, которые реализуют необходимые интерфейсы, но у нас также есть дополнительные наборы конкретных классов для альтернативных ситуаций и тестирования.

На данный момент мы объединяем все эти классы на верхнем уровне в коде:

IMyInterface xComponent = new ConcreteXComponent1();

Если я хочу поменять компоненты, мне нужно только изменить эту строку и перекомпилировать:

// IMyInterface xComponent = new ConcreteXComponent1();
IMyInterface xComponent = new ConcreteXComponentAlternative();

Это прекрасно работает, но, очевидно, требует перекомпиляции - я бы предпочел, чтобы конкретный класс был выбран с использованием значения из файла конфигурации.

Какой стандартный шаблон для изменения конкретных классов с помощью файла конфигурации? Есть ли стандартная библиотека, которую я могу использовать, чтобы решить эту проблему для меня?

Спасибо!

4 ответа

Решение

Вы хотите посмотреть на контейнеры IoC. (Spring.NET, StructureMap, Windsor и т. Д.)

Вы могли бы использовать Activator.CreateInstance метод. Один из методов перегрузки принимает имя типа и создает его экземпляр, используя конструктор по умолчанию. Затем вы можете сохранить имя типа класса в вашем конфигурационном файле и прочитать его из вашего приложения.

Попробуйте заводской шаблон

http://en.wikipedia.org/wiki/Abstract_factory_pattern

Использование контейнера IoC создаст пул или коллекцию ваших объектов, которые вы можете динамически загружать. Фреймворки, предложенные Роменом, будут использовать файл конфигурации, в котором описаны объекты и способы их создания.

Другие вопросы по тегам