![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
bus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
Имеетя написанная программа, необходимо сделать для неё несколько простеньких плагинов. Как это делается в .NET, кто с этим сталкивался, откликнитесь.
|
|||
|
||||
Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
да так же как и везде наверное в виде подключаемых динамически дллок, связь с дллками можно реализовать через интерфейсы. могу выслать пример на мыло...
-------------------- ![]() |
|||
|
||||
bus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
отправь пример, буду премного благодарен.
|
|||
|
||||
marcusmae |
|
||||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Общий ответ на общий вопрос.
Обычно взаимодействие plugin <-> host реализуется через интерфейсы. Программа хост имеет interface - оболочку, описывающую требуемую функциональность плагина, например :
Если плагин совместим с хостом, то его assembly в .dll или .exe - файле должна содержать тип (класс), приводимый к реализующий interface PlugIn. В этом случае, можно динамически подгрузить сборку плагина используя функции System.Reflection.Assembly и достать из неё совместимый тип (класс). Далее, обращаться к функциям плагина через интерфейс. Вот пример того, как я давно загружал тип из сборки. Здесь есть два интерфейса : PluginNotation_NET2_0.ICalcPlugin и PluginNotation_NET1_1.ICalcPlugin. Функция загружает сборку, загружает экспортируемые ею типы и пытается привести каждый к одному из интерфейсов. (попытался добавить некот. комментарии, чтобы было понятнее)
Это сообщение отредактировал(а) marcusmae - 14.10.2006, 20:18 -------------------- ἀπὸ μηχανῆς θεός |
||||
|
|||||
DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: нет Всего: 8 |
А как выгрузить загруженную сборку, со всеми полученными типами методом GetExportedTypes()?
Не сильно помогает:
Желательно для VS.NET 2003 (Framework v1.1)? |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Загруженную сборку выгрузить нельзя. Это ограничение .NET Если очень уж хочется иметь возможность выгрузить сборку после использования, создаём и юзаем отдельный AppDomain, который убиваем после использования. -------------------- ![]() |
|||
|
||||
DarkDragon |
|
|||
![]() GradVin ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 19.8.2006 Репутация: нет Всего: 8 |
mr.DUDA, спасибо!
|
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Вот забавно-то будет иметь ссылку на тип из выгруженной сборки..
|
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
||||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Да я собственно и не тешил себя надеждами, что CLR безвозмездно позволит мне так надругаться
![]() |
|||
|
||||
bus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 17.4.2006 Репутация: нет Всего: нет |
А примеров работающих нет ни у кого? А то я не особо врубаюсь в эту дискуссию
![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
bus, сделай поиск по форуму. Эта тема обсуждалась уже много раз.
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |