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:
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, comoWeatherReport GetWeatherReport()
.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; } }
Registrando o serviço com o host no
App.cs
construtor 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 .Consumindo os serviços. Há várias maneiras de consumir os serviços e duas das maneiras mais populares são:
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.
O consumo de serviços em
.razor
arquivos é feito com a@inject
diretiva , que é usada noMainPage.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.