Начало разработки собственного мода
Начало работы
Для начала разработки в проекте мода необходимо создать обязательные классы и структуру папок:
Definitions.cs
ModInitializer.cs
Создание обязательных классов
Definitions.cs - файл с определениями
Этот файл представляет собой контейнер определений, в настоящее время там содержится только устойчивое имя мода (для того, чтобы оставить его кодировку неизменной в случае переименования):
ModInitializer.cs - инициализация мода
В данном файле мы подключаем мод к основному проекту, определяем точки модификации основной логики путем добавления контроллеров бизнес-логики и обработчиков событий.
Основные методы
GetModInfo - метод возвращает описание мода;
Init - переопределяет базовые или дописывает дополнительные контроллеры;
PushCurrentMod - выгружает настройки мода из БД(для этого мы их ранее делали сериализуемыми) и добавляет его в список активированных модов.
Реализован на уровне базового класса - если нет специальной необходимости, его можно не перегружать.
Создание переносимой области
Далее нужно создать переносимую область, которая будет добавляться в основное приложение, формируется она таким образом:
В корне проекта создаем папку PortableViews
В ней создаем единственную папку с названием моде (в нашем примере ModPartnerDeveloperSolution) - другого содержимого в папке быть не должно
Уже в папке ModPartnerDeveloperSolution формируем инфраструктуру - подпапки, содержащие представления (cshtml), скрипты (js) и стили (сss).
Контейнер для бизнес-логики и моделей
Контейнер называется PluginLogics, данная папка содержит две подпапки
BLControllers - контроллеры бизнес-логики. Они как раз добавляются в контейнеры расширений в методе Init().
BLModels - бизнес-модели, в том числе и объекты DAL (можно их хранить в сторонней БД)
Итого после выполнения всех предварительных действий, получаем следующую структуру проекта: