Я создал приложение REST API, которое имеет множество настроек и хранится в базе данных.Эти настройки используются во время фильтрации и вставки данных в таблицу.
Поскольку мне нужно обращаться к настройкам каждый раз, когда мне нужно вставить данные.Вместо того, чтобы обращаться к настройкам из базы данных, я создал глобальный класс настроек и помещаю все настройки в этот класс.
public static class GlobalSettings
{
public static string Setting_1;
public static string Setting_2;
public static string Setting_3;
public static string Setting_4;
public static void Initialize(ISettingsRepo repo)
{
try
{
var settings = new GSettings(repo);
Setting_1 = settings.SetSetting_1();
Setting_2 = settings.SetSetting_2();
Setting_3 = settings.SetSetting_3();
Setting_4 = settings.SetSetting_4();
}
catch (Exception ex)
{
throw new Exception("Error when loading settings.\r\n" + ex.Message);
}
}
}
Здесь ISettingsRepo
- это служба с ограничениями, которая загружает настройки из базы данных.Функции будут инициализировать настройки для свойств.
Теперь для инициализации GlobalSettings
Я использовал метод configure в классе запуска, как этот.
using (var scope = app.ApplicationServices.CreateScope())
{
Settings.GlobalSettings.Initialize(scope.ServiceProvider
.GetRequiredService<Data_Repo.Settings.ISettingsRepo>());
}
Теперь я могу использовать это в контроллере или где угоднов моем API и получить настройки без доступа к базе данных.Также я могу перезагрузить GlobalSettings
в любое время, если настройки обновлены.Но правильно ли этот метод или есть проблемы с утечкой памяти?
Есть ли лучший способ сделать это ??