IOptionsBuilder <T>. Конфигурация никогда не попадает - PullRequest
0 голосов
/ 03 мая 2019

Я разрабатываю сервис веб-API и некоторые расширения для моего сервиса. Мне нужны некоторые пользовательские опции, поэтому я пытаюсь использовать механизм DI. Я добавил названную опцию, как показано ниже. Но строка выбора свойства опциона никогда не попадает.

services.AddOptions<TCustomPOCOClass>("PassLineDataTrackerOptions")
.Configure(o =>
{
  o.LocationEventInterval = TimeSpan.FromSeconds(5); // this line never hits
});

1 Ответ

0 голосов
/ 04 мая 2019

1) Configure вызывается только при использовании опций.

2) Передача имени в AddOptions выполняется только при определенных обстоятельствах.Подробнее об этом можно прочитать здесь .

Пример безымянной опции:

//in Startup.cs
services.AddOptions<MyOptionsClass>()
.Configure(o =>
{
    o.Data = "test";
});

//then in the controller
public MyController(IOptionsMonitor<MyOptionsClass> optionsAccessor)
{        
    //note: Configure is called as MyController gets created by DI
    var data = optionsAccessor.CurrentValue.Data;
}

Пример именованной опции:

//in Startup.cs
services.AddOptions<MyOptionsClass>("optionalOptionsName")
.Configure(o =>
{
    o.Data = "test";
});

var monitor = services.BuildServiceProvider()
    .GetService<IOptionsMonitor<MyOptionsClass>>();

//note: Configure gets called on .Get
var myOptions = monitor.Get("optionalOptionsName");
...