
Новое в Pure.DI: union types, генерация интерфейсов и DI без аллокаций
NikolayPyanikov 12 минут назад Новое в Pure.DI: union types, генерация интерфейсов и DI без аллокаций Средний 16 мин 540 .NET * C# * Обзор Pure.DI — это генератор кода для внедрения зависимостей (Dependency Injection),...
18 Temmuz'da Wellington'da en yüksek sıcaklık 14°C olacak mı?
Значимый прорыв формирует отрасль ИИ: NikolayPyanikov 12 минут назад Новое в Pure. DI: union types, генерация интерфейсов и DI без аллокаций Средний 16 мин 540 . NET * C# * Обзор Pure.
DI — это генератор кода для внедрения зависимостей (Dependency Injection), который работает на этапе компиляции. DI развивает идею «чистого DI»: вместо контейнера и рефлексии вы получаете обычный C#‑код, который создаёт композиции объектов. В этой статье — новые возможности из релизов 2.
Технические детали
1: от union types в роли DI‑контрактов до сценариев внедрения зависимостей без лишних аллокаций. Ключевые преимущества Pure. DI:Zero-Overhead: генерируемый код создания композиций объектов не отличается от ручногоПроверка на этапе компиляции: ошибки внедрения, циклические зависимости, недостающие привязки и все другие ошибки обнаруживаются на этапе компиляцииРаботает везде: от .
0 до последних версий . NET, Unity, Native AOT и других платформПрозрачность: вы всегда можете посмотреть сгенерированный код, отладить его и понять, как он работаетСо времени предыдущего поста вышло шесть релизов, и статья делится на две главные части. Новые возможности:union types как DI‑контрактыгенерация интерфейсов из классов ()привязки атрибутами в реализациях (, , , ): члены классов как источники зависимостейкастомные binding‑атрибутыскоупы: SetupScope, скоуп на сцену Unity, CreateScope() для Microsoft DIполная поддержка nullable reference typesTryBuildUp — безопасная «достройка» объектовготовность к C# 14: partial‑конструкторы и OverloadResolutionPriorityЧасть 2.
Производительность — DI на hot paths:Span, ReadOnlySpan и ref struct‑зависимостифабрики для stack-only значений (allows ref struct)zero-copy парсинг и method injection на hot pathдиагностики для stack-onlynon-boxing union resultsкаталог high-performance примеров: ArrayPool, пулы объектов, фабрики без замыканий, ValueTask‑корни, ThreadSafe = Offоптимизация генерации кодаДругие статьи на тему Pure. DI помогает сделать DI чистым - рекомендуется для понимания идеиPure. DI к началу 2024 годаНовое в Pure.
Отраслевые последствия
DI к концу 2024 годаPure. DI: новые возможностиЧасть 1. Новые возможностиUnion types как DI-контрактыВ preview‑версиях C# появились union types — тип, значением которого может быть один из нескольких заранее известных case‑типов.
DI научился использовать union как DI‑контракт: case‑реализация неявно конвертируется в union, и генератор строит весь граф зависимостей выбранного case за union‑контрактом. Главное отличие от интерфейса — case‑типам не нужна общая абстракция: это могут быть даже классы из разных сторонних SDK, которые вы не можете менять. Setup(nameof(Composition)) .
To() // Композиция решает, какой платёжный шлюз // стоит за union-контрактом .
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




