Об этом проекте

VContainer — это высокопроизводительная библиотека внедрения зависимостей (DI), разработанная специально для игрового движка Unity. Она делает акцент на скорости, минимальном выделении памяти и небольшом размере кода, что делает её эффективной альтернативой другим DI-фреймворкам, таким как Zenject. Ключевые особенности включают: - **Быстрое разрешение:** Обычно в 5-10 раз быстрее, чем Zenject. - **Нулевое выделение памяти GC:** Разрешение экземпляров не создаёт нагрузки на сборщик мусора (за исключением порождаемых экземпляров). - **Небольшой размер кода:** Мало внутренних типов и минимальное количество виртуальных вызовов. - **Правильные практики DI:** Простой и прозрачный API с тщательно отобранными функциями, чтобы избежать сложности. - **Неизменяемый контейнер:** Обеспечивает потокобезопасность и надёжность. Поддерживаемые типы внедрения: внедрение через конструктор, метод, свойство и поле. Также предоставляется гибкая область видимости с вложенными областями времени жизни, асинхронная поддержка и интеграция с UniTask и ECS (бета). Установка доступна через UPM (URL Git), OpenUPM или вручную с помощью .unitypackage. Библиотека требует Unity 2018.4 или более поздней версии. Базовое использование включает создание LifetimeScope и регистрацию сервисов, а затем их автоматическое разрешение. Библиотека поддерживает привязки по ключу, точки входа (IStartable, IAsyncStartable) и динамическое создание дочерних областей для асинхронной загрузки ресурсов. Окно диагностики в редакторе Unity помогает визуализировать и отлаживать регистрации и зависимости контейнера. VContainer вдохновлён Zenject, Autofac и MicroResolver и выпущен под лицензией MIT.