c # плагин системный вопрос - PullRequest
3 голосов
/ 27 октября 2010

поэтому я реализовал действительно простую систему плагинов.

У меня есть следующие сборки:

MainApp
IPlugin
PluginApp

И MainApp, и PluginApp содержат ссылку на IPlugin.Теперь в MainApp я сканирую папку плагинов и ищу вещи, которые реализуют интерфейс IPlugin.

Однако это не работает, поскольку и MainApp, и PluginApp ссылаются на свою собственную копию IPlugin.dll, поэтому они не распознаются как совпадающие при использовании справки Type.IsAssignableFrom()!

1 Ответ

2 голосов
/ 27 октября 2010

Вы можете попробовать вставить свой код, который определяет плагин, в сборку спутниковой библиотеки DLL. Таким образом, и ваш основной код, и плагины ссылаются на одни и те же типы.


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

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


Как насчет добавления dll сборок в каталог плагинов. Они должны ссылаться на dll при создании своего приложения, но заставляют их использовать версию dll для основных сборок, когда плагин фактически запускается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...