Можно ли передать настройку приложения в web.config классу C # - PullRequest
3 голосов
/ 17 октября 2008

Можно ли передать параметр "строка" приложения в файле web.config в класс Common C #?

Ответы [ 3 ]

10 голосов
/ 17 октября 2008

В любом классе вы можете использовать ConfigurationManager.AppSettings["KeyToSetting"] для доступа к любому значению в элементе web.config (или app.config)

8 голосов
/ 17 октября 2008

Конечно, это возможно, но нужно помнить, что правильно спроектированный класс (если он явно не предназначен для ASP.NET) не должен знать или интересоваться, откуда берется информация. Должно быть свойство (или метод, но свойства - более «способ» .NET), который вы устанавливаете с помощью строкового значения из самого приложения, а не для того, чтобы класс напрямую брал информацию из web.config.

0 голосов
/ 17 октября 2008

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

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

public static class ApplicationConfiguration
{
    private static DateTime myEpoch;
    public static DateTime Epoch
    {
       get
       {
          if (myEpoch == null)
          {
              string startEpoch = ConfigurationManager.AppSettings["Epoch"];
              if (string.IsNullOrEmpty(startEpoch))
              {
                 myEpoch = new DateTime(1970,1,1);
              }
              else
              {
                 myEpoch = DateTime.Parse(startEpoch);
              }
          }
          return myEpoch;   
       }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...