Глобальная переменная .NET Core не получает начальные настройки - PullRequest
0 голосов
/ 11 июля 2019

Я создаю глобальную переменную, но сначала мне нужно инициализировать ее с данными.Кажется, переменная работает, но инициализированные данные не устанавливаются.Вот мой ConfigureServices

public void ConfigureServices(IServiceCollection services)
{
    services.AddOptions();
    //Gets data for the Global variable
    MyOptions opt = SetValues();
    Action<MyOptions> options = (set => set = opt);
    services.Configure(options);
    services.Configure<MyOptions>(options);
    services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<MyOptions>>().Value);
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

Затем в разных контроллерах я называю это так:

public ValuesController(IOptions<MyOptions> options)
{
    Options = settings.Value;
}

При тестировании контроллеры могут изменять свойства в Options, однаконастройки сделаны в MyOptions opt = SetValues(); там нет.Что я делаю не так?

1 Ответ

1 голос
/ 12 июля 2019

Я не думаю, что в этом случае необходимо использовать шаблон встроенных опций.

Этот код не использует свои преимущества (например, чтение настроек из настроек приложения).

Вы можете зарегистрироватьсяЭкземпляр MyOptions в качестве Singleton без использования оболочки IOptions (как показано ниже).

services.AddSingleton(opt);

Лучшим способом использования этой функции было бы помещение параметров из ваших настроек в appsetting.json .

Справочная ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...