Реализация архитектуры плагинов в C # .NET 2.0 без дополнительной библиотеки интерфейса - PullRequest
0 голосов
/ 07 ноября 2011

Я должен реализовать плагин для моего приложения.

У меня есть основное приложение и библиотека, которые мне нужно загрузить во время выполнения. Мне нужно, чтобы мое основное приложение знало о классах, определенных в dll, чтобы правильно обрабатывать их во время динамического вызова.

Мне нужно реализовать дополнительную DLL с интерфейсом для достижения этой цели, или это другой способ сделать?

Ответы [ 3 ]

0 голосов
/ 07 ноября 2011

Рассматривали ли вы Структура управляемого расширения ?Ссылка также имеет хороший образец

0 голосов
/ 07 ноября 2011

Вы можете загрузить библиотеку, используя Assembly.Load, и тогда вам понадобится способ определить, какие типы вам нужно создать. Вы можете пометить классы с помощью интерфейса (то есть IPlugin), а затем посмотреть, может ли проверяемый тип быть присвоен типу IPlugin с помощью метода IsAssignableFrom. Другой подход состоит в том, чтобы пометить ваши классы пользовательскими атрибутами и посмотреть, имеет ли проверяемый вами тип этот атрибут (то есть PluginAttribute). В обоих случаях вам нужно поместить интерфейс или класс атрибутов в третью библиотеку, чтобы на нее можно было ссылаться в основном приложении и в библиотеке плагинов.

0 голосов
/ 07 ноября 2011

Вы можете использовать Assembly.Load, а затем использовать отражение, чтобы проверить типы для вашего общего интерфейса / атрибута.

...