配置服务时访问配置对象
Posted
技术标签:
【中文标题】配置服务时访问配置对象【英文标题】:Access configuration object while configuring services 【发布时间】:2021-11-18 15:33:03 【问题描述】:在控制台应用程序中,我尝试使用 Host.CreateDefaultBuilder()
进程,而不是手动构建 IConfiguration 和 IServiceProvider:
IHost host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
services.AddSingleton<Whatever>();
)
.Build();
我可以在构建主机后获取配置对象。但我正在寻找一种在ConfigureServices
正文中获取配置对象的方法,以便我可以将配置部分绑定到服务提供者。
类似:
AccountConfiguration accountConfig = new();
config.Bind("AccountConfiguration", accountConfig);
services.AddSingleton(accountConfig);
// or
services.Configure<AccountConfiguration>(config.GetSection("AccountConfiguration"));
有没有办法在配置服务的同时访问配置对象?还是在构建主机后向服务集合添加对象的好方法?
【问题讨论】:
【参考方案1】:传递给ConfigureServices
的lambda 的第一个参数是HostBuilderContext
,它公开了配置属性-IConfiguration Configuration
:
IHost host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
IConfiguration config = context.Configuration;
// use config
services.AddSingleton<Whatever>();
)
.Build();
【讨论】:
以上是关于配置服务时访问配置对象的主要内容,如果未能解决你的问题,请参考以下文章