Поделиться через


Внедрение зависимостей

Важно!

Этот проект является экспериментальным выпуском. Мы надеемся, что вы опробуете экспериментальные мобильные привязки Blazor и оставить отзыв по адресу https://github.com/xamarin/MobileBlazorBindings.

Внедрение зависимостей в приложение включает в себя несколько шагов.

  1. Определение интерфейса класса для службы. Пример приложения погоды не содержит определений интерфейсов из-за простой природы приложения, но в противном случае у него будет интерфейс с именем IWeatherService с такими методами, как WeatherReport GetWeatherReport().

  2. Реализация интерфейса службы с конкретной реализацией. Пример:

    public class WeatherService : IWeatherService
    {
        public WeatherReport GetWeatherReport()
        {
            // Get weather report data...
            return weatherReport;
        }
    }
    
  3. Регистрация службы в конструкторе узла App.cs:

    var host = Host.CreateDefaultBuilder()
        .ConfigureServices((hostContext, services) =>
        {
            // Register app-specific services
            services.AddSingleton<IWeatherService, WeatherService>();
        })
        .Build();
    

    В классе доступно ServiceCollectionServiceExtensionsнесколько методов регистрации служб.

  4. Использование служб. Существует несколько способов использования служб, и два из наиболее популярных способов:

    1. Внедрение конструктора в пользовательские типы также зарегистрировано в контейнере внедрения зависимостей. Чтобы использовать службу таким образом, добавьте параметр конструктора в класс, который использует службу, и при извлечении этого класса из контейнера внедрения зависимостей его параметры будут заполнены другими службами из контейнера внедрения зависимостей.

    2. Использование служб в .razor файлах выполняется с помощью директивы @inject , которая используется в MainPage.razor файле :

      @inject WeatherService WeatherService
      

      Дополнительные сведения о директиве @inject см. в документации по Blazor.

Совет

В гибридных приложениях службы совместно используются между собственным пользовательским интерфейсом приложения, веб-частью приложения и другими службами. Для совместного использования служб и состояния между областями гибридных приложений не требуется никаких особых действий.