Как динамически перезагружать IOptions<> при перезагрузке другого IOptions<>C#

Место общения программистов C#
Anonymous
Как динамически перезагружать IOptions<> при перезагрузке другого IOptions<>

Сообщение Anonymous »

Представьте следующее:

Код: Выделить всё

public class FooOptions {
public string FooProperty {get; set;}
}

public class BarOptions {
public string BarProperty {get; set;}
}

public class ConfigureBarOptions : IConfigureOptions {
private readonly IOptionsMonitor _fooOptionsMonitor;

public ConfigureBarOptions(IOptionsMonitor 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(Configuration);
Как я могу инициировать перезагрузку BarOptions, когда FooOptions перезагружается из-за базового обновления конфигурации?
Я пробовал различные попытки зарегистрировать некоторые версии:

Код: Выделить всё

services.AddSingleton(new ConfigurationChangeTokenSource(name, config));
Я также пытался придумать способ использования ChangeToken или _fooOptionsMonitor.OnChange, но, похоже, не нашел правильной реализации.

Подробнее здесь: https://stackoverflow.com/questions/697 ... ns-reloads

Вернуться в «C#»