Dependency Injection

Wichtig

Dieses Projekt ist ein experimentelles Release. Wir hoffen, dass Sie Experimentelle Mobile Blazor Bindings ausprobieren und Feedback unter https://github.com/xamarin/MobileBlazorBindingsgeben.

Das Integrieren von Abhängigkeitsinjektionen in eine Anwendung umfasst einige Schritte:

  1. Definieren einer Schnittstelle der -Klasse für den Dienst. Das Wetter-App-Beispiel verzichtet aufgrund der einfachen Art der App auf Schnittstellendefinitionen, hätte aber andernfalls eine Schnittstelle namens IWeatherService mit Methoden wie WeatherReport GetWeatherReport().

  2. Implementieren der Dienstschnittstelle mit einer konkreten Implementierung. Beispiel:

    public class WeatherService : IWeatherService
    {
        public WeatherReport GetWeatherReport()
        {
            // Get weather report data...
            return weatherReport;
        }
    }
    
  3. Registrieren des Diensts beim Host im App.csKonstruktor des Hosts:

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

    Für die ServiceCollectionServiceExtensions -Klasse sind mehrere Registrierungsmethoden für Dienste verfügbar.

  4. Nutzung der Dienste. Es gibt mehrere Möglichkeiten, die Dienste zu nutzen, und zwei der beliebtesten Möglichkeiten sind:

    1. Konstruktorinjektion in benutzerdefinierten Typen, die ebenfalls im Abhängigkeitsinjektionscontainer registriert sind. Um einen Dienst auf diese Weise zu nutzen, fügen Sie ihrer Klasse, die den Dienst verwendet, einen Konstruktorparameter hinzu. Wenn diese Klasse aus dem DI-Container abgerufen wird, werden die Parameter mit anderen Diensten aus dem DI-Container aufgefüllt.

    2. Der Verbrauch von Diensten in .razor Dateien erfolgt mit der @inject -Direktive, die in der MainPage.razor Datei verwendet wird:

      @inject WeatherService WeatherService
      

      Weitere Informationen zur @inject Anweisung finden Sie in der Blazor-Dokumentation.

Tipp

In Hybrid-Apps werden Dienste zwischen der nativen Benutzeroberfläche der App, dem Webteil der App und überall sonst gemeinsam genutzt. Es sind keine speziellen Schritte erforderlich, um Dienste und Status zwischen Bereichen von Hybrid-Apps gemeinsam zu nutzen.