将服务注入部分剃须刀配件类

时间:2020-04-13 10:52:26

标签: c# .net-core blazor

我想在剃刀组件中拆分代码。 HTML标记和逻辑。 我真的是新C#。 当我这样尝试

TaskManagement.razor.cs:

using Microsoft.AspNetCore.Components;
using System.Threading.Tasks;
using MintWebApp.Services;
using MintDataService;

namespace WebApp.Pages 
{
    partial class TaskManagement 
    {
        public TaskService _taskService;

        public TaskManagement(TaskService taskService)
        {
            _taskService = taskService;
        }

        protected override async Task OnInitializedAsync()
        {
            MintTaskFromJson task = await _taskService.GetExampleTask();
        }
    }
}

我收到此错误

MissingMethodException: No parameterless constructor defined for type 
'WebApp.Pages.TaskManagement'.

哪种是将服务注入部分类而不在剃刀文件中注入服务的最佳方法

1 个答案:

答案 0 :(得分:5)

您应该使用Inject属性

[Inject]
public TaskService TaskService { get; set; }

别忘了向服务中添加依赖项注入

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<TaskService, TaskService>();
}

您可以查看解释它的docs

还找到了一个解释它的tutorial

编辑:

您还应该注意,您也可以将其注入.razor文件中

@inject TaskService TaskService