Создайте и настройте новый проект Visual Studio.
Для создания и подключения модуля к программному комплексу Топоматик Робур необходимо создать следующие элементы:
Начнем с создания класса, реализующего функциональность модуля. Это должен быть наследник от PluginInitializator. Создайте новый класс компонента и назовите его «Module». Откройте окно редактирования кода компонента. Измените код класса, сделайте его наследником от PluginInitializator. Также можно убрать его из общей области видимости.
partial class Module : Topomatic.ApplicationPlatform.Plugins.PluginInitializator { //тут будут объявлены функции, реализующие нужный нам функционал }
Теперь создадим класс, отвечающий за инициализацию модуля. Этот класс должен быть наследником от абстрактного класса PluginHostInitializator и находится в общей области видимости. У него необходимо реализовать абстрактную функцию GetTypes() возвращающую список типов модулей. В нашем случае мы вернем только один тип - тип нашего класса Module.
Создайте новый класс и назовите его «ModulePluginHost». Наследуйте класс от PluginHostInitializator и реализуйте функции как описано выше.
public class ModulePluginHost : Topomatic.ApplicationPlatform.Plugins.PluginHostInitializator { //тут мы возвращаем типы всех модулей, которые хотим подключить, в нашем примере только один тип protected override Type[] GetTypes() { return new Type[] { typeof(Module) }; } }
Для подключения нашей библиотеки к программному комплексу нам необходим файл «Имя нашей библиотеки».plugin.
Это файл, который содержит инструкции для программного комплекса, позволяющие загрузить и подключить модули, содержащиеся в нашей сборке. Создайте новый файл и назовите его «Имя нашей библиотеки».plugin. Для этого выберите в контекстном меню проекта «Создать элемент…». В диалоге добавления нового элемента выберите текстовый файл. Выберите созданный файл в структуре проекта, и назначьте свойству «Копировать в выходной каталог» значение «Всегда копировать», чтобы всегда копировать этот файл в каталог куда Вы собираете Вашу библиотеку. Заполните созданный файл, как показано ниже.
{ "assemblies": { "Имя нашей библиотеки": { "assembly": "Имя нашей библиотеки.dll, Имя нашей библиотеки.ModulePluginHost" } } }
Элемент assemblies
определяет какие сборки будут подключены к программному комплексу и может содержать один или несколько элементов assembly
. В нашем случае этот элемент один и представляет из себя строку, содержащую, через запятую имя сборки и полное имя класса, наследника от PluginHostInitializator, включая его пространство имен.
Выполнив указанные выше действия и скомпилировав проект мы получим полностью работоспособный плагин, подключающий наш модуль к программному комплексу Топоматик Робур.
Сейчас наш модуль полностью пустой. Давайте добавим к нему немного функциональности. Для этого вернемся к коду класса «ModulePluginHost» и перекроем в нём метод Initialize как показано ниже.
//этот метод будет вызван в момент старта программного комплекса //при первой инициализации вашего модуля //после этого модуль будет закэширован public override void Initialize(PluginFactory factory) { base.Initialize(factory); //вызов этого метода покажет стандартный диалог с сообщением MessageDlg.Show("Привет Робур"); }
Этот метод будет вызван при старте программного комплекса и мы покажем там сообщение, в котором будет написано «Привет Робур». Сообщение будет вызвано при старте в момент первой инициализации модуля, потом он будет сохранен и инициализация модуля будет вызываться по требованию. Если необходимо сбросить информацию о сохраненных модулях, можно воспользоваться командой «clearcache» доступной в командной строке.
Теперь мы можем запустить наш проект. Он автоматически соберет нашу сборку в каталог с программным комплексом, скопирует туда же файл plugin и запустит исполняемый файл программного комплекса, при старте которого мы увидим наше сообщение.