我想将此接口注入到我的控制器中:
public interface IDatabaseService<T>
{
IEnumerable<T> GetList();
...
}
我想使用通用的,因为在我的WebApi
项目我有像这样的控制器ProjectController
, TaskController
等等,我想对每种类型使用通用接口(例如,IDatabaseService<Project>
, IdatabaseService<Task>
etc).
将被注入到控制器的类如下所示:
public class ProjectService : IDatabaseService<Project>
{
private readonly DbContext context;
public ProjectService(DbContext context)
{
this.context = context;
}
public IEnumerable<Project> GetList() { }
...
}
但是当我尝试注入我的Startup.cs
:
services.AddScoped<IDatabaseService<T>>();
我需要通过T
type.
我的问题是,如何使注入通用以及如何在控制器中正确注入它?例如:
public class ProjectController : ControllerBase
{
private readonly ProjectService projectService;
public ProjectController (IDatabaseService<Project> projectService)
{
this.projectService = projectService;
}
}
如果有效的话?制作通用接口注入控制器是一个好习惯吗?如果不可以,怎样做比较好?
您可以通过添加以下行来做到这一点Startup.cs
// best practice
services.AddTransient(typeof(IDatabaseService<>),typeof(DatabaseService<>));
Visit Here https://learn.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2了解更多ASP.NET Core 中的依赖注入
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)