框架中有两种获取参数配置的方式。
本章节是第二种—— 将appsettings.json文件中的所有配置,通过依赖注入的方式,填充到各自对应的对象实例里。
注意:本方法只支持根节点的参数配置,如果想要获取非根节点的,可以做个嵌套的子类。
一、相关的服务注册
代码语言:javascript复制// 初始化配置
builder.Host
.ConfigureAppConfiguration((hostingContext, config) =>
{
hostingContext.Configuration.ConfigureApplication();
});
builder.ConfigureApplication();
app.ConfigureApplication();
app.UseApplicationSetup();
// 配置注册
builder.Services.AddAllOptionRegister();
二、使用方式
有2种方式均可使用,看个人的爱好习惯。
使用方式一,静态方式:
1、appsettings.json中定义某个配置
代码语言:javascript复制"Redis": {
"Enable": false,
"ConnectionString": "127.0.0.1:6379",
"InstanceName": ""
},
2、按照一定的层级路径,定义具体的实体类
代码语言:javascript复制/// <summary>
/// 缓存配置选项
/// </summary>
public sealed class RedisOptions : IConfigurableOptions
{
/// <summary>
/// 是否启用
/// </summary>
public bool Enable { get; set; }
/// <summary>
/// Redis连接
/// </summary>
public string ConnectionString { get; set; }
/// <summary>
/// 键值前缀
/// </summary>
public string InstanceName { get; set; }
}
3、直接调用
代码语言:javascript复制var cacheOptions = App.GetOptions<RedisOptions>();
使用方式二,依赖注入方式:
直接在构造函数中,通过IOptions<>注入即可
代码语言:javascript复制private readonly SeqOptions _seqOptions;
/// <summary>
/// ValuesController
/// </summary>
public ValuesController(IOptions<SeqOptions> seqOptions)
{
// 测试
_seqOptions = seqOptions.Value;
}