Конфигурация параметров с динамическими (во время выполнения) значениями - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть класс MySettings, который я хочу настроить в качестве параметров, чтобы сделать его доступным через внедрение зависимостей.

В настоящее время я делаю (в методе расширения построителя сервисов):

services.Configure<MySettings>(configuration.GetSection(MySettings.CustomSectionName));

Моя проблема в том, что одна часть настроек происходит из настроек приложения, а другие значения известны только во время выполнения (запуска).

Поэтому я пытаюсь выяснить, как настроить параметры, добавив значения времени выполнения. Я пытался добавить значения в конфигурацию

configuration["SectionName:ValueX"] = "my runtime value";

Это не сработало, и ValueX всегда имеет значение null (когда параметры вводятся в контроллер).

Есть предложения для меня?

1 Ответ

0 голосов
/ 15 апреля 2019

Вы можете попробовать зарегистрировать MySettings вместо IOptions<MySettings> как

public void ConfigureServices(IServiceCollection services)
{          
    var mySettings = new MySettings();
    Configuration.Bind("MySettings", mySettings);
    mySettings.Title = "Hello";
    services.AddSingleton(mySettings);
}

и использовать MySettings как

public class HomeController : Controller
{
    private readonly MySettings _settings;
    public HomeController(MySettings settings)
    {
        _settings = settings;
    }
    public IActionResult Index()
    {
        return Ok(_settings);
    }
...