Blazor 依赖注入Dependency Injection

在 Blazor 中,依赖注入(Dependency Injection, DI)是一个重要的概念,它允许我们以解耦的方式将服务注入到组件中。
以下是一个简单的 Blazor 依赖关系注入的代码例子。

首先,我们定义一个简单服务接口的 IDataService 和一个实现该接口的 DataService 类:

public interface IDataService
{
    string GetData();
}

public class DataService : IDataService
{
    public string GetData()
    {
        return "Data from the service!";
    }
}

接下来,我们需要在 Blazor 应用的启动类注册这个服务。

builder.Services.AddSingleton<IDataService, DataService>();

现在,服务已经被注册为单例(AddSingleton),意味着在整个应用生命周期中只有一个实例。我们也可以使用 AddScopedAddTransient 来注册具有不同生命周期的服务。

最后,在组件中使用 [inject] 属性来注入服务:

@page "/inject-service"
@using BlazorDemoApp.Services

@inject IDataService DataService

<h1>Inject Service</h1>
<p>@DataService.GetData()</p>

@code {
    // 可以在这里使用 DataService,因为它已经被注入到组件中了
}

在上面的组件中,我们使用了 @inject 指令来注入 IDataService。现在,我们可以在组件的代码中通过 DataService 属性来访问服务,并调用其方法。当组件被渲染时,Blazor 的依赖关系注入系统会处理服务的创建和注入。

示例代码

InjectService.razor

posted @ 2023-08-25 13:58  Lulus  阅读(2253)  评论(0编辑  收藏  举报