Посібник з ASP.NET ін'єкції залежностей ядра, інверсії керування (DI IOC):
Огляд:
Ін'єкція залежностей у двох словах:
Ін'єкція залежностей (DI) — це техніка, яка реалізує слабке зв'язування між об'єктом і його партнерами або залежностями. Надайте ці об'єкти, які клас використовує для виконання своїх операцій із класом у певний спосіб, замість прямого створення співробітників або використання статичних посилань.
ASP.NET Core DI зазвичай використовує ін'єкцію конструктора для отримання об'єктів, наприклад, після налаштування ін'єкції ConfigureServices його можна отримати наступними способами:
Що, якщо ви вручну отримаєте об'єкт для ін'єкції?
Перший спосіб отримати(Іноді ти не можеш це зрозуміти,Не рекомендується):
Другий спосіб отримати(Рекомендоване використання):
Примітка: Слід зазначити, що використання ServiceLocator.Instance.GetService<T>(); ,Можна отримати лише об'єкти, введені AddTransient і AddSingleton, і не може отримати інжекційний об'єкт AddScoped (унікальний у життєвому циклі запиту), не тому, що його неможливо отримати, а тому, що отриманий об'єкт не отримує конструктор, тобто придбаний об'єкт не є спільним, і сценарій використання такий, як IUnitOfWork.
Отже, як ви вручну отримуєте об'єкти ін'єкції під час життєвого циклу запиту? Ось як:
або
Інтерфейс IHttpContextAccessor розміщений у пакеті Microsoft.AspNetCore.Http.AbstractionsNuget.
|