Injection de dépendances
Important
Ce projet est une version expérimentale. Nous espérons que vous essayez experimental Mobile Blazor Bindings et fournissez des commentaires à l’adresse https://github.com/xamarin/MobileBlazorBindings.
L’incorporation de l’injection de dépendances dans une application implique quelques étapes :
Définition d’une interface de classe pour le service. L’exemple d’application météo renonce aux définitions d’interface en raison de la nature simple de l’application, mais aurait sinon une interface nommée
IWeatherService
avec des méthodes telles queWeatherReport GetWeatherReport()
.Implémentation de l’interface de service avec une implémentation concrète. Par exemple :
public class WeatherService : IWeatherService { public WeatherReport GetWeatherReport() { // Get weather report data... return weatherReport; } }
Inscription du service auprès de l’hôte dans
App.cs
le constructeur de :var host = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { // Register app-specific services services.AddSingleton<IWeatherService, WeatherService>(); }) .Build();
Plusieurs méthodes d’inscription pour les services sont disponibles sur la
ServiceCollectionServiceExtensions
classe .Consommation des services. Il existe plusieurs façons de consommer les services, et deux des méthodes les plus courantes sont les suivantes :
L’injection de constructeur dans les types personnalisés est également inscrite dans le conteneur d’injection de dépendances. Pour consommer un service de cette façon, ajoutez un paramètre de constructeur à votre classe qui utilise le service. Lorsque cette classe est récupérée à partir du conteneur DI, ses paramètres sont renseignés avec d’autres services du conteneur d’adresses di.
L’utilisation des services dans
.razor
les fichiers s’effectue avec la@inject
directive , qui est utilisée dans leMainPage.razor
fichier :@inject WeatherService WeatherService
En savoir plus sur la
@inject
directive dans la documentation Blazor.
Conseil
Dans les applications hybrides, les services sont partagés entre l’interface utilisateur native de l’application, le composant WebPart de l’application et partout ailleurs. Aucune étape spéciale n’est requise pour partager des services et l’état entre des zones d’applications hybrides.