Ответ 1
У меня была такая же проблема, и я узнал, что вам нужно добавить это расширение в свой проект:
Microsoft.Extensions.Options.ConfigurationExtensions
Следующий код вырезается из примеров в docs.asp.net.
public void ConfigureServices(IServiceCollection services)
{
// Setup options with DI
services.AddOptions();
// Configure MyOptions using config
services.Configure<MyOptions>(Configuration);
// Configure MyOptions using code
services.Configure<MyOptions>(myOptions =>
{
myOptions.Option1 = "value1_from_action";
});
Вызов services.Configure<MyOptions>(Configuration);
вызывает ошибку компиляции:
не может конвертировать из "Microsoft.Extensions.Configuration.IConfigurationRoot" в "System.Action"
Ручная настройка параметров работает нормально. Я пропустил что-то действительно очевидное здесь?
У меня была такая же проблема, и я узнал, что вам нужно добавить это расширение в свой проект:
Microsoft.Extensions.Options.ConfigurationExtensions
Вам необходимо добавить следующий пакет nuget в ваш основной проект ASP, если вы хотите сконфигурировать строго типизированный конфиг таким образом.
Microsoft.Extensions.Options.ConfigurationExtensions
Методы расширения, содержащиеся в пакете, позволят вам настроить строго типизированную конфигурацию так, как вы хотите, и способ отображения большинства обучающих программ.
services.Configure<MyOptions>(Configuration);
Альтернативно, вы можете добавить еще один пакет связующего:
Microsoft.Extensions.Configuration.Binder
Конфигурация будет выглядеть примерно так:
services.AddOptions();
services.Configure<MyOptions>(x => Configuration.Bind(x));
Это недостаток в том, что у вас так много модульных упакованных расширений. Легко потерять информацию о том, где есть функциональность.