选项
选项(Options)是一个类,用于封装应用程序的配置信息。通过定义选项类,你可以将相关配置项组织在一起,并在需要时轻松地注入到应用程序的其他组件中。
开始使用
添加配置节点
json
"Position": {
"Title": "Editor",
"Name": "Joe Smith"
}
创建 PositionOptions 的配置选项类
csharp
public class PositionOptions
{
public const string Position = "Position";
public string Title { get; set; } = String.Empty;
public string Name { get; set; } = String.Empty;
}
创建一个中间件
所有强类型的的绑定都可以在这里进项绑定
csharp
public static class Configure
{
public static IServiceCollection AddConfigureSetup(this IServiceCollection services,IConfiguration config)
{
services.Configure<PositionOptions>(config.GetSection(PositionOptions.Position));
//等其他选项
return services;
}
}
注册服务
csharp
//进行选项注册
builder.Services.AddConfigureSetup(builder.Configuration);
读取配置
IOptions<TOptions>
适用于在应用启动时读取配置数据,并且选项不会在应用程序生命周期内更改。它注册为单一实例并且可以注入到任何服务生存期中。IOptionsSnapshot<TOptions>
适用于在每次请求时重新计算选项的方案中有用。这意味着它可以读取已更新的配置数据。它不能注册为单一实例,而是注册为范围内,因此无法注入到单一实例服务中。此外,它还支持命名选项。IOptionsMonitor<TOptions>
是一种实时监视配置更改的接口。它是在IOptionsSnapshot<TOptions>
基础上开发的,可以实时检测配置更改并提供通知。在每个请求中,它都会返回最新的配置选项。与IOptionsSnapshot<TOptions>
类似,它也支持命名选项。
csharp
public class WeatherForecastController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
private readonly IConfiguration _configuration;
public readonly PositionOptions _PositionOptions;
public WeatherForecastController(ILogger<WeatherForecastController> logger,
IOptions<PositionOptions> optionsSnapshot,
IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
_PositionOptions = optionsSnapshot.Value;
}
[HttpGet("GetWeatherForecast")]
public string GetSetting()
{
return _PositionOptions.Title;
}
}
更多关于资料可查阅官方文档。