在asp.net核心中将加载配置添加到注入依赖项中

时间:2016-11-23 16:51:07

标签: c# asp.net asp.net-core .net-core

在我的Asp.Net核心API中,我有一些存储库类,我在我的Startup.cs中使用了services.AddTransient方法注入

services.AddTransient<IRepository, Repository>();

我还将我的appsettings.json的一部分加载到Startup.cs中的自定义对象中

services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));

我的存储库类需要从appsettings.json加载数据库连接字符串。有没有办法将这些设置直接注入存储库类?或者由控制器的构造函数将连接字符串传递给存储库类?

1 个答案:

答案 0 :(得分:2)

是的,您可以将其直接注入您的存储库。

    public MyRepository(IOptions<MyConfig> config)
    {
        var connString = config.Value.DbConnString;
    }

其中MyConfig是您配置的POCO对象,并在启动时添加/注册:

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.Configure<MyConfig>(Configuration);
    }

MyConfig看起来像这样:

    public class MyConfig
    {
        public string DbConnString { get; set; }
    }

appsettings.json就像这样:

{
  "ApplicationName": "MyApp",
  "Version": "1.0.0",
  "DbConnString ": "my-conn-string"
}