Перейти к содержанию

Класс ApplicationServicesContext

Глобальный доступ к сервисам приложения и описание их состава.

Класс не привязан ни к какому конкретному DI-контейнеру: единственный тип интеграции — IServiceProvider из BCL. Состав сервисов описывается методом RegisterApplicationServices, а время жизни и регистрацию выбирает хост.

Current предназначен только для мест, куда не может дотянуться внедрение через конструктор: расширений разметки, присоединённых свойств, конвертеров, code-behind без контейнера. Сами сервисы библиотеки получают зависимости через конструкторы и никогда не обращаются к глобальному контексту.

Пространство имён: Eremex.AvaloniaUI.Controls.ApplicationServices
Сборка: Eremex.Avalonia.Controls.ApplicationServices.dll
NuGet-пакет: Eremex.Avalonia.Controls.ApplicationServices

Объявление

public static class ApplicationServicesContext

Свойства

имя описание
static Current { get; } Текущий поставщик сервисов или null, если он ещё не задан.

Методы

имя описание
static GetRequiredService<T>() Возвращает сервис и генерирует InvalidOperationException, если он отсутствует.
static GetService<T>() Возвращает сервис или null, если он не зарегистрирован или контекст ещё не инициализирован.
static RegisterApplicationServices(…) Описывает состав сервисов приложения без привязки к какому-либо конкретному DI-контейнеру. Хост получает пары из типа сервиса и фабрики и сам решает, как и с каким временем жизни их регистрировать.
static SetCurrent(…) Задаёт текущего поставщика сервисов. Вызывается один раз при запуске приложения. Передача null сбрасывает контекст (используется в тестах).

См. также



* Эта страница переведена с использованием технологий машинного перевода.

Used in articles