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 :

  1. 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 que WeatherReport GetWeatherReport().

  2. 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;
        }
    }
    
  3. Inscription du service auprès de l’hôte dans App.csle 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 .

  4. Consommation des services. Il existe plusieurs façons de consommer les services, et deux des méthodes les plus courantes sont les suivantes :

    1. 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.

    2. L’utilisation des services dans .razor les fichiers s’effectue avec la @inject directive , qui est utilisée dans le MainPage.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.