Injektáž závislostí
Důležité
Tento projekt je experimentální verze. Doufáme, že vyzkoušíte experimentální mobilní vazby Blazor a poskytnete nám zpětnou vazbu na adrese https://github.com/xamarin/MobileBlazorBindings.
Začlenění injektáže závislostí do aplikace zahrnuje několik kroků:
Definování rozhraní třídy pro službu. Ukázka aplikace počasí se z důvodu jednoduché povahy aplikace vzdává definic rozhraní, ale jinak by měla rozhraní s názvem
IWeatherService
s metodami, jakoWeatherReport GetWeatherReport()
je .Implementace rozhraní služby s konkrétní implementací Příklad:
public class WeatherService : IWeatherService { public WeatherReport GetWeatherReport() { // Get weather report data... return weatherReport; } }
Registrace služby u hostitele v
App.cs
konstruktoru:var host = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { // Register app-specific services services.AddSingleton<IWeatherService, WeatherService>(); }) .Build();
Ve třídě je k dispozici
ServiceCollectionServiceExtensions
několik metod registrace služeb.Využívání služeb. Existuje několik způsobů, jak využívat služby, a dva z nejoblíbenějších způsobů jsou:
Injektáž konstruktoru ve vlastních typech je také zaregistrovaná v kontejneru injektáže závislostí. Pokud chcete službu využívat tímto způsobem, přidejte do třídy parametr konstruktoru, který službu používá, a když se tato třída načte z kontejneru DI, její parametry budou naplněny dalšími službami z kontejneru DI.
Využívání služeb v
.razor
souborech se provádí pomocí direktivy@inject
, která se používá vMainPage.razor
souboru:@inject WeatherService WeatherService
Další informace o direktivě
@inject
najdete v dokumentaci k Blazoru.
Tip
V hybridních aplikacích se služby sdílejí mezi nativním uživatelským rozhraním aplikace, webovou částí aplikace a všude jinde. Ke sdílení služeb a stavu mezi oblastmi hybridních aplikací se nevyžadují žádné zvláštní kroky.