[ASP.NET Core 3框架揭秘] Options[7]: 与配置系统的整合
2021-04-27 02:26
标签:ase 静态 系统 order sof 针对 nop 静态方法 binder
Options模型本身与配置系统完全没有关系,但是配置在大部分情况下会作为绑定Options对象的数据源,所以有必要将两者结合在一起。与《扩展与定制》演示的两个例子一样,针对配置系统的集成同样是通过定制Options模型相应的对象来实现的。具体来说,集成配置系统需要解决如下两个问题:
将承载配置数据的IConfiguration对象绑定为Options对象。
自动感知配置数据的变化。
第一个问题涉及针对Options对象的初始化问题,这自然是通过自定义IConfigureOptions
public class NamedConfigureFromConfigurationOptions: ConfigureNamedOptions where TOptions : class { public NamedConfigureFromConfigurationOptions(string name, IConfiguration config) : base(name, options => ConfigurationBinder.Bind(config, options)) {} }
第二个问题则采用自定义的IOptionsChangeTokenSource
public class ConfigurationChangeTokenSource: IOptionsChangeTokenSource { private IConfiguration _config; public string Name { get; } public ConfigurationChangeTokenSource(IConfiguration config) : this(Options.DefaultName, config) { } public ConfigurationChangeTokenSource(string name, IConfiguration config) { _config = config; Name = name ?? Options.DefaultName; } public IChangeToken GetChangeToken() => _config.GetReloadToken() }
将IConfiguration对象绑定为Options对象的NamedConfigureFromConfigurationOptions
public static class OptionsConfigurationServiceCollectionExtensions { public static IServiceCollection Configure( this IServiceCollection services, IConfiguration config) where TOptions : class => services.Configure (Options.Options.DefaultName, config); public static IServiceCollection Configure ( this IServiceCollection services, string name, IConfiguration config) where TOptions : class => services .AddSingleton >( new ConfigurationChangeTokenSource (name, config)) .AddSingleton >( new NamedConfigureFromConfigurationOptions (name, config)); }
[ASP.NET Core 3框架揭秘] Options[1]: 配置选项的正确使用方式[上篇]
[ASP.NET Core 3框架揭秘] Options[2]: 配置选项的正确使用方式[下篇]
[ASP.NET Core 3框架揭秘] Options[3]: Options模型[上篇]
[ASP.NET Core 3框架揭秘] Options[4]: Options模型[下篇]
[ASP.NET Core 3框架揭秘] Options[5]: 依赖注入
[ASP.NET Core 3框架揭秘] Options[6]: 扩展与定制
[ASP.NET Core 3框架揭秘] Options[7]: 与配置系统的整合
[ASP.NET Core 3框架揭秘] Options[7]: 与配置系统的整合
标签:ase 静态 系统 order sof 针对 nop 静态方法 binder
原文地址:https://www.cnblogs.com/artech/p/inside-asp-net-core-06-07.html
文章标题:[ASP.NET Core 3框架揭秘] Options[7]: 与配置系统的整合
文章链接:http://soscw.com/essay/79951.html