Внедрение зависимостей
Важно!
Этот проект является экспериментальным выпуском. Мы надеемся, что вы опробуете экспериментальные мобильные привязки Blazor и оставить отзыв по адресу https://github.com/xamarin/MobileBlazorBindings.
Внедрение зависимостей в приложение включает в себя несколько шагов.
Определение интерфейса класса для службы. Пример приложения погоды не содержит определений интерфейсов из-за простой природы приложения, но в противном случае у него будет интерфейс с именем
IWeatherService
с такими методами, какWeatherReport GetWeatherReport()
.Реализация интерфейса службы с конкретной реализацией. Пример:
public class WeatherService : IWeatherService { public WeatherReport GetWeatherReport() { // Get weather report data... return weatherReport; } }
Регистрация службы в конструкторе узла
App.cs
:var host = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { // Register app-specific services services.AddSingleton<IWeatherService, WeatherService>(); }) .Build();
В классе доступно
ServiceCollectionServiceExtensions
несколько методов регистрации служб.Использование служб. Существует несколько способов использования служб, и два из наиболее популярных способов:
Внедрение конструктора в пользовательские типы также зарегистрировано в контейнере внедрения зависимостей. Чтобы использовать службу таким образом, добавьте параметр конструктора в класс, который использует службу, и при извлечении этого класса из контейнера внедрения зависимостей его параметры будут заполнены другими службами из контейнера внедрения зависимостей.
Использование служб в
.razor
файлах выполняется с помощью директивы@inject
, которая используется вMainPage.razor
файле :@inject WeatherService WeatherService
Дополнительные сведения о директиве
@inject
см. в документации по Blazor.
Совет
В гибридных приложениях службы совместно используются между собственным пользовательским интерфейсом приложения, веб-частью приложения и другими службами. Для совместного использования служб и состояния между областями гибридных приложений не требуется никаких особых действий.