статическая операция класса доступа ConfigurationManager

Я рассматриваю возможность создания статического класса для обработки всего моего доступа к appSettings Web.config. Например, это будет выглядеть так:

public static class ConfigManager
{
  public static string Timeout = ConfigurationManager.AppSettings["Timeout"];

  public static string Version = ConfigurationManager.AppSettings["Version"];
}

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

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

Кто-нибудь знает, как комбинация статического свойства, считываемого из конфигураций, будет вести себя под капотом?


person andrew.rockwell    schedule 21.09.2011    source источник


Ответы (1)


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

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

Каждый раз, когда вы обращаетесь к переменной после этого, она будет извлекать значение из памяти.

Если вас беспокоит возможность изменения значений во время выполнения, вы можете вместо этого использовать свойство, а затем реализовать стратегию кэширования, которая будет обновлять это свойство через заданный интервал времени.

person Evan    schedule 02.12.2011