Sdílet prostřednictvím


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ů:

  1. 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, jako WeatherReport GetWeatherReport()je .

  2. Implementace rozhraní služby s konkrétní implementací Příklad:

    public class WeatherService : IWeatherService
    {
        public WeatherReport GetWeatherReport()
        {
            // Get weather report data...
            return weatherReport;
        }
    }
    
  3. Registrace služby u hostitele v App.cskonstruktoru:

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

    Ve třídě je k dispozici ServiceCollectionServiceExtensionsněkolik metod registrace služeb.

  4. 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:

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

    2. Využívání služeb v .razor souborech se provádí pomocí direktivy @inject , která se používá v MainPage.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.