У меня есть API DLL ( API.dll , например), которая, в дополнение ко многим другим соображениям, делает доступным абстрактный класс ( AbstractClass ** 1008).
Теперь, используя это AbstractClass Я реализовал его на двух разных библиотеках:
- First.API.Implementation.dll с ConcreteImplementation1
- Second.API.Implementation.dll с ConcreteImplementation2
И ConcreteImplementation1, и ConcreteImplementation2 являются реализациями одного и того же абстрактного класса.
То, что я хочу, - это приложение, в котором я могу выбрать, какую из этих двух библиотек использовать, и, с помощью этого, выбрать, какую реализацию использовать без необходимости изменения пользователем чего-либо в коде и, по возможности, без остановки приложения.
Какой-то файл конфигурации, в котором я могу заставить приложение использовать любую реализацию, какую захочу. Что-то вроде:
<appconfiguration>
<implementation_to_use>
<dll>First.API.Implementation.dll</dll>
<class>ConcreteImplementation1</class>
</implementation_to_use>
</appconfiguration>
Я почти ничего не знаю о внедрении зависимостей, кроме его концепции, но я думаю, это идеально подходит для этой задачи.
Я исследовал несколько библиотек DI / IoC, но я не знаком со всеми концепциями и именами. Я могу использовать любую библиотеку, какую захочу. Для того, что я могу сказать, они наиболее часто используются: StructureMap , Ninject и Sprint.NET
Кроме того, помимо всех библиотек и реализаций, мне нужно указать файл, который будет использоваться этим приложением. Могу ли я указать его путь в этом же файле?
Мне просто нужно несколько советов и указаний для реализации такой вещи. Некоторые примеры использования одной из этих библиотек были бы замечательными.
Спасибо.