相依性插入
重要
此專案是實驗性版本。 我們希望您嘗試實驗性行動裝置 Blazor 系結,並在 提供意見反應 https://github.com/xamarin/MobileBlazorBindings 。
將相依性插入併入應用程式牽涉到幾個步驟:
定義服務的 類別介面。 由於應用程式的簡單本質,天氣應用程式範例會提供介面定義,但否則會有名為
IWeatherService
的介面,例如WeatherReport GetWeatherReport()
。使用具體實作來實作服務介面。 例如:
public class WeatherService : IWeatherService { public WeatherReport GetWeatherReport() { // Get weather report data... return weatherReport; } }
在 的建構函式中
App.cs
向主機註冊服務:var host = Host.CreateDefaultBuilder() .ConfigureServices((hostContext, services) => { // Register app-specific services services.AddSingleton<IWeatherService, WeatherService>(); }) .Build();
類別上
ServiceCollectionServiceExtensions
提供數個服務註冊方法。取用服務。 有數種方式可取用服務,其中兩種最熱門的方式如下:
自訂類型的建構函式插入也會在相依性插入容器中註冊。 若要以這種方式取用服務,請將建構函式參數新增至使用服務的類別,以及從 DI 容器擷取該類別時,其參數會填入 DI 容器中的其他服務。
檔案中的
.razor
取用服務是使用@inject
指示詞來完成,該指示詞會用於檔案中MainPage.razor
:@inject WeatherService WeatherService
深入瞭解Blazor 檔中的
@inject
指示詞。
提示
在混合式應用程式中,服務會在應用程式的原生 UI、應用程式的網頁元件,以及其他地方共用。 在混合式應用程式區域之間共用服務和狀態不需要任何特殊步驟。