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