c# - 如何在另一个 IOptions<> 重新加载时动态重新加载 IOptions<>
问题描述
想象一下:
public class FooOptions {
public string FooProperty {get; set;}
}
public class BarOptions {
public string BarProperty {get; set;}
}
public class ConfigureBarOptions : IConfigureOptions<BarOptions> {
private readonly IOptionsMonitor<FooOptions> _fooOptionsMonitor;
public ConfigureBarOptions(IOptionsMonitor<FooOptions> fooOptionsMonitor) {
_fooOptionsMonitor = fooOptionsMonitor;
}
public void Configure(BarOptions options) {
options.BarProperty = _fooOptionsMonitor.CurrentValue.FooProperty;
}
}
// in Startup.cs - bind to a configuration provider that is set to reload
services.Configure<FooOptions>(Configuration);
当 FooOptions 由于底层配置更新而重新加载时,如何触发 BarOptions 的重新加载?
我已经尝试过各种尝试注册某些版本:
services.AddSingleton<IOptionsChangeTokenSource<BarOptions>>(new ConfigurationChangeTokenSource<BarOptions>(name, config));
我也尝试过使用 ChangeToken 或 _fooOptionsMonitor.OnChange 的方法,但似乎没有得到正确的实现。
解决方案
推荐阅读
- jupyter-notebook - 如何使用 nbconvert 访问 jupyter 标签
- android - 是否可以在没有额外变量的情况下增加 mutablelivedata?
- c# - 使用modbus进行异步设备通信的问题
- vim - 自定义语法高亮无法通过 ~/.vimrc
- android - Kotlin、Coroutines、Kodein 和 RecyclerView 列表
- c - 将包含浮点数的结构转换为对网络更友好的结构
- javascript - 复制 dataLayer 正在返回 {object Object}
- substrate - 基板中的事件存储成本是多少?
- sed - 如何附加文件 n 次并使用 sed 对块进行编号?
- r - 在数据框中创建一个作为总和、按类别或不同变量的新列。(我曾经在 STATA 中使用 bysort egen total 执行此操作)