Я пытаюсь модулировать часть моей кодовой базы в c #, создавая чисто интерфейсную библиотеку классов. Затем в моем основном приложении я хотел бы динамически загрузить DLL, которая будет зависеть от выбора пользователя. Эта dll должна реализовывать всю упомянутую библиотеку классов интерфейса.
Я ржавый, когда дело доходит до c # и не знаю, как это сделать правильно здесь.
Прямо сейчас яЯ статически связываю одну реализацию именованной библиотеки классов в основной программе, но, как я уже сказал, хотел, чтобы файлы DLL в моей папке расширений загружали ее полностью динамически. Как истинное расширение должно делать.
public interface ISomeInterface {
int CalculateSomethingNice();
bool Load();
bool Save();
}
Допустим, я хочу две реализации всех интерфейсов, которые есть в моей библиотеке, в этом примере он имеет только ISomeInterface, в двух отдельных проектах, которые могут быть недоступны вмое решение, Extension1 и Extension2 (на более позднем этапе загружается с: extension1.dll и extension2.dll)
Как это правильно сделать в c #?
[Редактировать] Я нашел три отличных поста в блоге, которые соответствуют моему сценарию использования, как перчатка, поэтому поделитесь ими здесь на случай, если кому-то еще понадобится подобное введение: