Инструменты пользователя

Инструменты сайта


Боковая панель

developers:tutorial:module

Создание первого модуля

Создайте и настройте новый проект Visual Studio.

Для создания и подключения модуля к программному комплексу Топоматик Робур необходимо создать следующие элементы:

  • Класс реализующий функциональность модуля
  • Класс отвечающий за инициализацию модуля
  • Файл для подключения к программному комплексу.

Начнем с создания класса, реализующего функциональность модуля. Это должен быть наследник от PluginInitializator. Создайте новый класс компонента и назовите его «Module». Рисунок 10. Создание компонента Откройте окно редактирования кода компонента. Рисунок 11. Перейти к коду компонента Измените код класса, сделайте его наследником от 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.

Здесь и далее замените «Имя нашей библиотеки», на имя вашего проекта, в примере это tutorial1

Это файл, который содержит инструкции для программного комплекса, позволяющие загрузить и подключить модули, содержащиеся в нашей сборке. Создайте новый файл и назовите его «Имя нашей библиотеки».plugin. Для этого выберите в контекстном меню проекта «Создать элемент…». Рисунок 12. Создание элемента В диалоге добавления нового элемента выберите текстовый файл. Рисунок 13. Выбор текстового файла Выберите созданный файл в структуре проекта, и назначьте свойству «Копировать в выходной каталог» значение «Всегда копировать», чтобы всегда копировать этот файл в каталог куда Вы собираете Вашу библиотеку. Рисунок 14. Копирование в выходной каталог Заполните созданный файл, как показано ниже.

{
  "assemblies": {
    "Имя нашей библиотеки": {
        "assembly": "Имя нашей библиотеки.dll, Имя нашей библиотеки.ModulePluginHost"
        }
    }
}

Элемент assemblies определяет какие сборки будут подключены к программному комплексу и может содержать один или несколько элементов assembly. В нашем случае этот элемент один и представляет из себя строку, содержащую, через запятую имя сборки и полное имя класса, наследника от PluginHostInitializator, включая его пространство имен.

Выполнив указанные выше действия и скомпилировав проект мы получим полностью работоспособный плагин, подключающий наш модуль к программному комплексу Топоматик Робур.

Сейчас наш модуль полностью пустой. Давайте добавим к нему немного функциональности. Для этого вернемся к коду класса «ModulePluginHost» и перекроем в нём метод Initialize как показано ниже.

    //этот метод будет вызван в момент старта программного комплекса
    //при первой инициализации вашего модуля
    //после этого модуль будет закэширован
    public override void Initialize(PluginFactory factory)
    {
        base.Initialize(factory);
        //вызов этого метода покажет стандартный диалог с сообщением
        MessageDlg.Show("Привет Робур");
    }

Этот метод будет вызван при старте программного комплекса и мы покажем там сообщение, в котором будет написано «Привет Робур». Сообщение будет вызвано при старте в момент первой инициализации модуля, потом он будет сохранен и инициализация модуля будет вызываться по требованию. Если необходимо сбросить информацию о сохраненных модулях, можно воспользоваться командой «clearcache» доступной в командной строке.

Для того чтобы использовать методы статического класса MessageDlg необходимо добавить нужные пространства имен в секцию using. Visual Studio позволяет легко сделать это, нажав правой клавишей на имени класса и выбрав добавление директивы using.

Теперь мы можем запустить наш проект. Он автоматически соберет нашу сборку в каталог с программным комплексом, скопирует туда же файл plugin и запустит исполняемый файл программного комплекса, при старте которого мы увидим наше сообщение. Рисунок 15. Сообщение - Привет Робур

Исходный код примера расположен в проекте «tutorial1».
developers/tutorial/module.txt · Последние изменения: 2022/03/15 19:10 — proxor