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

Adding loading configuration into inject dependencies in asp.net core

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

services.AddTransient<IRepository, Repository>();

我还将 appsettings.json 的一部分加载到 Startup.cs

中的自定义对象中
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));

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

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

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

其中 MyConfig 是您配置的一个 POCO 对象,并且在启动时得到 added/registered:

    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"
}