在.NET Core中注入通用接口

18 浏览
0 Comments

在.NET Core中注入通用接口

我想要将这个接口注入到我的控制器中:

public interface IDatabaseService
{
    IEnumerable GetList();
    ...
}

我想要使用泛型,因为在我的WebApi项目中,我有像ProjectController、TaskController等控制器,并且我想要为每种类型使用泛型接口(例如IDatabaseService、IDatabaseService等)。

注入到控制器中的类将如下所示:

public class ProjectService : IDatabaseService
{
    private readonly DbContext context;
    public ProjectService(DbContext context)
    {
        this.context = context;
    }
    public IEnumerable GetList() { }
    ...
}

但是当我尝试在我的Startup.cs中注入时:

services.AddScoped>();

我需要传递T类型。

我的问题是,如何使注入成为泛型,并如何正确地在控制器中注入它?例如:

public class ProjectController : ControllerBase
{
    private readonly ProjectService projectService;
    public ProjectController(IDatabaseService projectService)
    {
        this.projectService = projectService;
    }
}

这样会起作用吗?创建一个泛型接口以注入到控制器中是否是一个好的做法?如果不是,如何更好地做到这一点?

0