共用方式為


相依性插入

重要

此專案是實驗性版本。 我們希望您嘗試實驗性行動裝置 Blazor 系結,並在 提供意見反應 https://github.com/xamarin/MobileBlazorBindings

將相依性插入併入應用程式牽涉到幾個步驟:

  1. 定義服務的 類別介面。 由於應用程式的簡單本質,天氣應用程式範例會提供介面定義,但否則會有名為 IWeatherService 的介面,例如 WeatherReport GetWeatherReport()

  2. 使用具體實作來實作服務介面。 例如:

    public class WeatherService : IWeatherService
    {
        public WeatherReport GetWeatherReport()
        {
            // Get weather report data...
            return weatherReport;
        }
    }
    
  3. 在 的建構函式中 App.cs 向主機註冊服務:

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

    類別上ServiceCollectionServiceExtensions提供數個服務註冊方法。

  4. 取用服務。 有數種方式可取用服務,其中兩種最熱門的方式如下:

    1. 自訂類型的建構函式插入也會在相依性插入容器中註冊。 若要以這種方式取用服務,請將建構函式參數新增至使用服務的類別,以及從 DI 容器擷取該類別時,其參數會填入 DI 容器中的其他服務。

    2. 檔案中的 .razor 取用服務是使用 @inject 指示詞來完成,該指示詞會用於檔案中 MainPage.razor

      @inject WeatherService WeatherService
      

      深入瞭解Blazor 檔中@inject 指示詞。

提示

在混合式應用程式中,服務會在應用程式的原生 UI、應用程式的網頁元件,以及其他地方共用。 在混合式應用程式區域之間共用服務和狀態不需要任何特殊步驟。