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:
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 wieWeatherReport GetWeatherReport()
.Implementieren der Dienstschnittstelle mit einer konkreten Implementierung. Beispiel:
public class WeatherService : IWeatherService { public WeatherReport GetWeatherReport() { // Get weather report data... return weatherReport; } }
Registrieren des Diensts beim Host im
App.cs
Konstruktor 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.Nutzung der Dienste. Es gibt mehrere Möglichkeiten, die Dienste zu nutzen, und zwei der beliebtesten Möglichkeiten sind:
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.
Der Verbrauch von Diensten in
.razor
Dateien erfolgt mit der@inject
-Direktive, die in derMainPage.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.