Wstrzykiwanie zależności
Ważne
Ten projekt jest wersją eksperymentalną. Mamy nadzieję, że wypróbujesz eksperymentalne powiązania platformy Blazor dla urządzeń przenośnych i przekażesz opinię na stronie https://github.com/xamarin/MobileBlazorBindings.
Dołączenie wstrzykiwania zależności do aplikacji obejmuje kilka kroków:
Definiowanie interfejsu klasy dla usługi. Przykład aplikacji pogodowej oznacza definicje interfejsu ze względu na prosty charakter aplikacji, ale w przeciwnym razie miałby interfejs o nazwie
IWeatherService
z metodami, takimi jakWeatherReport GetWeatherReport()
.Implementowanie interfejsu usługi przy użyciu konkretnej implementacji. Na przykład:
public class WeatherService : IWeatherService { public WeatherReport GetWeatherReport() { // Get weather report data... return weatherReport; } }
Zarejestrowanie usługi przy użyciu hosta w
App.cs
konstruktorze programu :var host = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { // Register app-specific services services.AddSingleton<IWeatherService, WeatherService>(); }) .Build();
W klasie jest dostępnych
ServiceCollectionServiceExtensions
kilka metod rejestracji usług.Korzystanie z usług. Istnieje kilka sposobów korzystania z usług, a dwa z najpopularniejszych sposobów to:
Wstrzykiwanie konstruktora w typach niestandardowych również zarejestrowane w kontenerze wstrzykiwania zależności. Aby korzystać z usługi w ten sposób, dodaj parametr konstruktora do klasy korzystającej z usługi, a gdy ta klasa zostanie pobrana z kontenera DI, będzie mieć parametry wypełnione innymi usługami z kontenera DI.
Korzystanie z usług w
.razor
plikach odbywa się za@inject
pomocą dyrektywy , która jest używana wMainPage.razor
pliku:@inject WeatherService WeatherService
Dowiedz się więcej o dyrektywie w dokumentacji platformy
@inject
Blazor.
Porada
W aplikacjach hybrydowych usługi są współużytkowane między natywnym interfejsem użytkownika aplikacji, częścią internetową aplikacji i wszędzie indziej. Nie ma żadnych specjalnych kroków wymaganych do udostępniania usług i stanu między obszarami aplikacji hybrydowych.