@dmitriy_domaskin
.NET Developer

Как подключать классы как плагины при старте приложения?

Пишу векторный графический редактор. На данный момент в приложении реализовано множество классов геометрических фигур Line, Ellipse, Circle, Poligon и тд. Классы реализуют различные интрефейсы, IDrawfble, IBrushable, IMultupoint и тд. Проект реализован так, что код завязан на этих интерфейсах, а не конкретных классах. Требуется подключать классы фигур как плагины при старте приложения, и сама программа о этих фигурах ничего не знала, а интерфейсные сущности были вынесены в отдельную сборку SDK. Не хватает знаний как это реализовать и вообще в какую сторону копать. Подкиньте информации на данную тему
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 3
Позднее связывание. В сдк выносите общие типы, плагины или реализуют какой-то тип, или от какого-то типа наследуются. Загружаете сборку, находите реализацию (или наследование от) этого типа, инстанциируете и понеслась.
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
https://docs.microsoft.com/ru-ru/dotnet/framework/mef/

пока mef плотно используется в продуктах ms, так что предположительно у него длинная линия жизни
Ответ написан
Комментировать
@Ascar
di containers, выберите любой. В конструкторах указываете:
IDrawfble _drawfble;
IBrushable _brushable;
IMultupoint _multupoint;
public MyClass(IDrawfble drawfble, IBrushable brushable, IMultupoint multupoint){
_drawfble=drawfble;
_brushable=brushable;
_multupoint-multupoint;
}

Потом di контейнер связывает/передает в них уже объекты из ваших сборок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы