Share via


Injeção de dependência

Importante

Este projeto é uma versão experimental. Esperamos que você experimente associações blazor móveis experimentais e forneça comentários em https://github.com/xamarin/MobileBlazorBindings.

Incorporar a injeção de dependência em um aplicativo envolve algumas etapas:

  1. Definindo uma interface de classe para o serviço. O exemplo de aplicativo meteorológico prevê definições de interface devido à natureza simples do aplicativo, mas, de outra forma, teria uma interface chamada IWeatherService com métodos, como WeatherReport GetWeatherReport().

  2. Implementando a interface de serviço com uma implementação concreta. Por exemplo:

    public class WeatherService : IWeatherService
    {
        public WeatherReport GetWeatherReport()
        {
            // Get weather report data...
            return weatherReport;
        }
    }
    
  3. Registrando o serviço com o host no App.csconstrutor do :

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

    Vários métodos de registro para serviços estão disponíveis na ServiceCollectionServiceExtensions classe .

  4. Consumindo os serviços. Há várias maneiras de consumir os serviços e duas das maneiras mais populares são:

    1. Injeção de construtor em tipos personalizados também registrados no contêiner de injeção de dependência. Para consumir um serviço dessa forma, adicione um parâmetro de construtor à classe que usa o serviço e, quando essa classe for recuperada do contêiner de DI, ela terá seus parâmetros preenchidos com outros serviços do contêiner de DI.

    2. O consumo de serviços em .razor arquivos é feito com a @inject diretiva , que é usada no MainPage.razor arquivo :

      @inject WeatherService WeatherService
      

      Saiba mais sobre a @inject diretiva na documentação do Blazor.

Dica

Em aplicativos híbridos, os serviços são compartilhados entre a interface do usuário nativa do aplicativo, a web part do aplicativo e em todos os outros lugares. Não há etapas especiais necessárias para compartilhar serviços e estado entre áreas de aplicativos híbridos.