| Overloads | |
|---|---|
| ConfigureApqCfg<TOptions>(this IServiceCollection, string) | 配置强类型选项(从 ICfgRoot 绑定),支持嵌套对象和集合 |
| ConfigureApqCfg<TOptions>(this IServiceCollection, string, Action<TOptions>) | 配置强类型选项并启用配置变更监听 |
配置强类型选项(从 ICfgRoot 绑定),支持嵌套对象和集合
public static Microsoft.Extensions.DependencyInjection.IServiceCollection ConfigureApqCfg<TOptions>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string sectionKey)
where TOptions : class, new();
TOptions
配置选项类型
services Microsoft.Extensions.DependencyInjection.IServiceCollection
服务集合
sectionKey System.String
配置节键名,用于定位 TOptions 的配置数据
Microsoft.Extensions.DependencyInjection.IServiceCollection
服务集合,支持链式调用
// 定义配置选项类
public class DatabaseOptions
{
public string? ConnectionString { get; set; }
public int Timeout { get; set; } = 30;
public RetryOptions Retry { get; set; } = new();
}
public class RetryOptions
{
public int Count { get; set; } = 3;
public int Delay { get; set; } = 1000;
}
// 注册配置服务
services.AddApqCfg(cfg => cfg
.AddJson("config.json", level: 0)
.AddEnvironmentVariables(prefix: "APP_", level: 2));
// 绑定强类型配置
services.ConfigureApqCfg<DatabaseOptions>("Database");
// 使用配置
var dbOptions = serviceProvider.GetRequiredService<IOptions<DatabaseOptions>>().Value;
var retryCount = dbOptions.Retry.Count;
此方法会注册 IOptions<TOptions>、IOptionsMonitor<TOptions> 和 IOptionsSnapshot<TOptions> 服务。 配置选项类必须有无参构造函数。 支持嵌套对象和集合类型的自动绑定。
配置强类型选项并启用配置变更监听
public static Microsoft.Extensions.DependencyInjection.IServiceCollection ConfigureApqCfg<TOptions>(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, string sectionKey, System.Action<TOptions> onChange)
where TOptions : class, new();
TOptions
配置选项类型
services Microsoft.Extensions.DependencyInjection.IServiceCollection
服务集合
sectionKey System.String
配置节键名,用于定位 TOptions 的配置数据
onChange System.Action<TOptions>
配置变更回调函数,当配置发生变化时调用
Microsoft.Extensions.DependencyInjection.IServiceCollection
服务集合,支持链式调用
// 定义配置选项类
public class DatabaseOptions
{
public string? ConnectionString { get; set; }
public int Timeout { get; set; } = 30;
}
// 注册配置服务并监听变更
services.ConfigureApqCfg<DatabaseOptions>("Database", options => {
Console.WriteLine($"数据库连接字符串已更新: {options.ConnectionString}");
// 执行必要的重新连接逻辑
ReconnectDatabase(options.ConnectionString);
});
void ReconnectDatabase(string connectionString)
{
// 实现数据库重新连接逻辑
}
此方法会注册 IOptions<TOptions>、IOptionsMonitor<TOptions> 和 IOptionsSnapshot<TOptions> 服务, 同时添加一个配置变更监听器。 变更回调会在配置源发生变化且导致 TOptions 实例更新时触发。 返回的 IDisposable 对象可用于取消监听,但已自动注册到服务容器,会在应用关闭时释放。