Создание плагинов
От: Аноним  
Дата: 28.07.05 09:44
Оценка:
Все на C#

Итак, есть:
1) Прога с поддержкой плагинов
2) Ядро, в котором написан абстрактный класс Plugin (kernel.dll)

Как создаются сейчас плагины?
1) Разработчик качает kernel.dll
2) Указывает в References эту сборку и указывает namespace'ы
3) Создает свой класс:
public class MyPlugin : Plugin { }

4) переопределяет абстрактные функции, определенные в ядре.

Собственно плагин готов... И загружается из сборки как класс Plugin, но в нем уже все переопределено и наш плагин работает.

Хотелось избавиться от некоторых проблем..., которые все сводятся к тому, чтобы не давать качать класс kernel.dll разработчикам.
Например, в самом простом случае дать только Interface с методами, которые требует переопределить, но тогда внутри этих методов нельзя будет вызывать некоторые вспомогательные функции, определенные в ядре.

Вопрос: как сделать поддержку плагинов, чтобы не давать никаких реализованных классов и функций разработчикам плагинов?

Чтобы все было ясно, простой гипотетический пример:
Я разработчик фотошопа, хочу сделать поддержку плагинов — сжатие изображений. Разработчикам требуется переопределить функции Compress и DeCompress, при этом вызывая ядерную функцию GetQuality — качество сжатия.
Я мог бы дать им абстрактный класс в котором определена функция GetQuality, но не хочу. Думаю, проблема понятна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.