Здравствуйте! Возник такой вопрос: А возможно ли изменить реализацию функционала после того как проект будет уже скомпилирован, но без перекомпиляции программы?
Это можно сделать через РЕФЛЕКСИЮ: просто грузите свою сборку, ищите названия своих классов, которые реализуют интерфейс, и используете их.
Как вариант - использовать IoC-контейнер:
- 1) в главной сборке создать контейнер.
- 2) найти нужную сборку и передать в неё этот контейнер
- 3) в той сборке забиндить нужный класс на этот интерфейс в переданном контейнере.
Тот же приём можно использовать, когда в решении есть два проекта, второй проект использует первый проект (первый добавлен в зависимостях), а вот первому нельзя добавить второй проект в зависимостях. Решение - контейнер в первом проекте, а классы биндятся во втором. Тогда пункт 2 не нужен.