依赖关系注入

重要

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