MoDI
MoDI. Lightweight IoC container for Unity.
MoDI. Lightweight IoC container for Unity.
MoDI — простой контейнер для внедрения зависимостей в Unity.
Когда я хочу в чём-то разобраться, я почти сразу перехожу к практической части. Если со старта не получается, тогда начинаю читать мануалы :) После этого, снова повторяю шаг №1 и так по кругу. Иногда это надоедает и я или ищу другие пути решения, или говорю себе, что это «не моё», мне это не надо — сдаюсь короче.
Решил я однажды разобраться как работать с Zenject и Ninject в Unity. Сделал несколько тестовых проектов — вроде работает. Начал копать дальше, понял принцип и решил, что хочу своё такое же, но попроще :) И чтобы было достаточно для всех моих разработческих потребностей. Так появился MoDI.
Не буду расписывать принцип инверсии зависимостей, об этом можно прочитать в более достоверных источниках. Скажу только, что более-менее серьёзный проект без этого сложно поддерживать и развивать. Да и вообще, один раз начав использовать сразу понимаешь все плюсы.
Это можно сказать и про ECS, да Leopotam? :)
MoDI можно подключить к проекту с помощью пакетного менеджера, через него же можно импортировать сцену с примерами. Ну или просто скачать архив и добавить в проект.
Простейший пример выглядит так:
using MoDI;
using UnityEngine;
public class QuickStart : MonoBehaviour {
public void Start() {
DI.Get().Bind<Hello>().WithArguments("Hi, I'm MoDI!");
Hello hello = DI.Get().Resolve<Hello>();
}
}
public class Hello {
public Hello(string data) {
Debug.Log(data);
}
}
После запуска данного скрипта в консоли появится сообщение: «Hi, I’m MoDI!».
В документации можно найти ещё примеры и описание API.
Очередной велосипед для себя, но может кого-то заинтересует. Если хотите разработаться в этом как и я, пишите, помогу чем смогу ?