依赖关系注入
重要
此项目是实验性版本。 我们希望你试用实验性移动 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、应用的 Web 部件和其他所有位置之间共享。 在混合应用的区域之间共享服务和状态不需要执行任何特殊步骤。