在 ASP.NET Core 1.0 项目中,如何使用 DI 将参数传递给构造函数。例如,我如何在 Startup.cs 中注册以下服务。 services.AddTransient(typeof(IStateService), new StateService());
不起作用,因为 StateService() 需要 BlogingContext 类型的输入参数。或者,是否有其他方法可以构建涉及数据库的以下服务?这里 State
是来自 SQL Server Db 的表。应用程序使用代码优先方法的 EntityFrameworkCore
。我使用的是 2016 年 6 月 27 日发布的最新版 ASP.NET Core 1.0 和 VS2015-Update 3
我看到一个 similar example here但不是完全相同类型的输入参数。
服务:
public interface IStateService
{
IEnumerable<State> List();
}
public class StateService : IStateService
{
private BloggingContext _context;
public StateService(BloggingContext context)
{
_context = context;
}
public IEnumerable<State> List()
{
return _context.States.ToList();
}
}
最佳答案
如文档所述 here (向下滚动一点)您应该像这样注册 IStateService
和 BloggingContext
:
services.AddDbContext<BloggingContext>();
services.AddScoped<IStateService, StateService>();
然后 DI 会为你解析整个依赖树。请注意,您应该在服务上使用范围化生命周期,因为该服务应该使用与 DbContext 相同的生命周期并且它使用范围化。
关于c# - ASP.NET Core 依赖注入(inject),带参数注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38175194/