Перебор всех статичных свойств статичного класса и изменение их значений

Рейтинг: 0Ответов: 0Опубликовано: 12.08.2023

В статичном классе SiteConfig реализован метод сохранения настроек в БД. Сами настройки представляют собой поля. Например,

/// <summary>
/// Базовые настройки сайта
/// </summary>
public static GeneralConfig General { get; private set; }

где каждый класс (в примере это GeneralConfig) реализует интерфейс ISiteConfig, в котором есть методы сохранения и загрузки данных с БД. Сам метод реализован так:

/// <summary>
/// Сохраняю все настройки в БД
/// </summary>
/// <param name="configService">Сервис для работы с конфигурациями</param>
/// <param name="reLoadAfterSave">Нужно ли перезагружать данные после сохранения</param>
public static void SaveAll (ConfigService configService, bool reLoadAfterSave = true)
{
    foreach (FieldInfo field in typeof(SiteConfig).GetFields(BindingFlags.Public | BindingFlags.Static |
                                                             BindingFlags.FlattenHierarchy))
    {
        // получаем значение поля
        object? fieldValue = field.GetValue(null);

        // если значением поля является класс, реализующий интерфейс ISiteConfig
        if (fieldValue is ISiteConfig scValue)
        {
            // - то сохраняем его значения в БД
            scValue.SaveToDataBase(configService);

            //- если нужно перезагружать значения
            if (reLoadAfterSave)
                // -- то перезагружаем
                scValue.LoadFormDataBase(configService);
        }

        field.SetValue(null, fieldValue);
    }
}

Вопрос: где может быть ошибка или почему не работает?

Ответы

Ответов пока нет.