c# - ASP.NET Core 依赖注入(inject),带参数注入(inject)

标签 c# asp.net-core visual-studio-2015 dependency-injection entity-framework-core

在 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 (向下滚动一点)您应该像这样注册 IStateServiceBloggingContext:

services.AddDbContext<BloggingContext>();
services.AddScoped<IStateService, StateService>();

然后 DI 会为你解析整个依赖树。请注意,您应该在服务上使用范围化生命周期,因为该服务应该使用与 DbContext 相同的生命周期并且它使用范围化。

关于c# - ASP.NET Core 依赖注入(inject),带参数注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38175194/

相关文章:

c# - 如何将用户与数据层应用程序中的角色相关联

javascript - 如何在 Asp.Net Core 中不知道正确名称的情况下包含 js 文件

c# - 我应该如何为 dnx451 和 dnxcore50 引用 HttpClient?

c# - 创建 TFS 自定义 checkin 策略 : Check Comment if it contains certain string

visual-studio-2015 - VS2015 在构建解决方案中发布多个 Web 项目

c# - MySQL 和 C#.NET DataGridView、更新、插入和删除

c# - Elasticsearch中的每日新索引

c# - 如何使c#脚本统一在场景启动时运行

c# - WEB.API 不会在 POST 方法中反序列化传入的 JSON

c++ - 为什么 boost::filesystem 中止而不是抛出异常?