配置服务时访问配置对象
Access configuration object while configuring services
在控制台应用程序中,我没有手动构建 IConfiguration 和 IServiceProvider,而是尝试使用 Host.CreateDefaultBuilder()
进程:
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"));
有没有办法在配置服务的同时访问配置对象?或者在主机已经构建之后向服务集合添加对象的好方法?
传递给 ConfigureServices
的 lambda 的第一个参数是 HostBuilderContext
,它公开配置 属性 - IConfiguration Configuration
:
IHost host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
IConfiguration config = context.Configuration;
// use config
services.AddSingleton<Whatever>();
})
.Build();
在控制台应用程序中,我没有手动构建 IConfiguration 和 IServiceProvider,而是尝试使用 Host.CreateDefaultBuilder()
进程:
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"));
有没有办法在配置服务的同时访问配置对象?或者在主机已经构建之后向服务集合添加对象的好方法?
传递给 ConfigureServices
的 lambda 的第一个参数是 HostBuilderContext
,它公开配置 属性 - IConfiguration Configuration
:
IHost host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
IConfiguration config = context.Configuration;
// use config
services.AddSingleton<Whatever>();
})
.Build();