Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Рассылка для плагинов

40K
27 августа 2009 года
MixerLosev
26 / / 13.07.2009
Есть главное приложение. Есть плагины. Плагин - dll, в которой зашит некоторый класс, реализующий интерфейс IPlugin.
Гланое приложение грузит плагины следующим образом
1)Смотрит все dll в файле с плагинами
2)Грузит их
3)Вынимает все типы из сборки и если тип(класс) поддерживает интерфейс IPlugin создает экземпляр этого типа - это и будет экземпляр плагина.

Как сделать следующие вещи:
1)Мне нужно, чтобы плагины "узнали" о том что произошло какое-то событие в хостовом приложении
2)Список событий на которое подписывается плагин можно было более-менне легко настраивать.
11
27 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
через COM и Connection points
либо через callback ф-ции (что не очень приятно)
либо через замыкание
40K
27 августа 2009 года
MixerLosev
26 / / 13.07.2009
COM не подойдет.У меня .NET.
Можно пример кода для Callback. Ну или словами или ссылочку
2.1K
27 августа 2009 года
wAngel
129 / / 23.11.2004
Цитата: MixerLosev
COM не подойдет.У меня .NET.
Можно пример кода для Callback. Ну или словами или ссылочку


В интерфейс плагина добавляешь callback-функцию-обработчик события.

 
Код:
IPlugin
{
...
    OnChange(args);
}

В контроллере плагинов, у каждого плагина вызываешь метод, после наступления требуемого события.
 
Код:
aPlugins.Change(...);

Можно вместо нескольки функций на каждое событие использовать одну и передавать тип события в качестве второго аргумента.
Вообще, наверное лучше использовать паттерн observer (наблюдатель), и уже каждый плагин подписывать на требуемые события (это по поводу настройки событий), например при инициализации объекта-плагина.

ЗЫ Вообще, кажется hardcase давал ссылку на полезный материал по проектированию плагинов / модульных систем.
40K
31 августа 2009 года
MixerLosev
26 / / 13.07.2009
Спасибо за информацию, сделал.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог