添加加载配置到 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"
}
在我的 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"
}