Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Current »

Начало работы

Для начала разработки в проекте мода необходимо создать обязательные классы и структуру папок:

  • Definitions.cs

  • ModInitializer.cs

Создание обязательных классов

  • Definitions.cs - файл с определениями

Этот файл представляет собой контейнер определений, в настоящее время там содержится только устойчивое имя мода (для того, чтобы оставить его кодировку неизменной в случае переименования):

  • ModInitializer.cs - инициализация мода

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

Основные методы

  • GetModInfo - метод возвращает описание мода;


 

  • Init - переопределяет базовые или дописывает дополнительные контроллеры;


 

  • PushCurrentMod - выгружает настройки мода из БД(для этого мы их ранее делали сериализуемыми) и добавляет его в список активированных модов.

Реализован на уровне базового класса - если нет специальной необходимости, его можно не перегружать.


Создание переносимой области

Далее нужно создать переносимую область, которая будет добавляться в основное приложение, формируется она таким образом:

  1. В корне проекта создаем папку PortableViews

  2. В ней создаем единственную папку с названием моде (в нашем примере ModPartnerDeveloperSolution) - другого содержимого в папке быть не должно

  3. Уже в папке ModPartnerDeveloperSolution формируем инфраструктуру - подпапки, содержащие представления (cshtml), скрипты (js) и стили (сss).

Контейнер для бизнес-логики и моделей

Контейнер называется PluginLogics, данная папка содержит две подпапки

  • BLControllers - контроллеры бизнес-логики. Они как раз добавляются в контейнеры расширений в методе Init().

  • BLModels - бизнес-модели, в том числе и объекты DAL (можно их хранить в сторонней БД)

Итого после выполнения всех предварительных действий, получаем следующую структуру проекта:


 

  • No labels