Какой лучший способ получить данные из app.config? - PullRequest
3 голосов
/ 19 августа 2010

Давно я пользовался:

ConfigurationManager.ConnectionStrings["sqlconnectionstring"].ConnectionString

чтобы получить строку подключения из файла app.config

<configuration>
   <connectionStrings>
       <add name="sqlconnectionstring" connectionString="Data  Source=ggg;Initial Catalog =DB;User ID=sa;Password=sa" />
   </connectionStrings>
</configuration>

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

global::myProj.Properties.Settings.Default.sqlconnectionstring;
  1. В чем разница?
  2. Могу ли я получить доступ к ключу в appSetting?
  3. Почему мне не нужно импортировать System.Configuration?

Спасибо, Асаф

Ответы [ 3 ]

3 голосов
/ 19 августа 2010

Материал global::myProj.Properties.Settings.Default.sqlconnectionstring; создается конструктором настроек в Visual Studio.

Настройки можно найти в обозревателе решений в Свойства-> Settings.settings, типы безопасной оболочки автоматически генерируются для всех вашихсвойства, определенные в конструкторе настроек.

Это работает только для настроек, определенных в конструкторе настроек (строки подключения автоматически добавляются в конструктор настроек).

Редактировать , чтобыответьте на ваши конкретные вопросы

  1. Второй является сгенерированной оболочкой первого.
  2. Нет, но если вы создаете свои собственные настройки в конструкторе настроек, они сохраняются в другом разделе, называемом"applicationSettings".
  3. Импорт (или, скорее, использование полного имени выполняется в сгенерированном классе оболочки).
1 голос
/ 19 августа 2010

Я думаю, что упомянутый вами тип global::myProj.Properties.Settings.Default создан для вас Visual Studio, если вы используете настройку для своего проекта.Он использует низкоуровневую инфраструктуру для получения доступа к app.config.

Обратите внимание, что пространство имен System.Configuration доступно, даже если вы не ссылаетесь на System.configuration.dll.Это связано с тем, что несколько типов пространства имен System.Configuration находятся в нескольких других сборках (например, System.dll), на которые ссылаются по умолчанию.

ConfigurationManager находится в System.configuration.dll.Таким образом, если вы хотите использовать его, вам нужно сослаться на эту сборку.

Если вам нужен доступ к разделу appSetting в файле app.config, я думаю, вам нужно придерживаться ConfigurationManager.Если вы запускаете новое приложение, я бы порекомендовал использовать поддержку Visual Studio для настроек и получить доступ к вашим настройкам с помощью типов, указанных в пространстве имен global::myProj.Properties.

0 голосов
/ 19 августа 2010

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

Для C # гораздо проще использовать Properties.Settings.Default для доступа к свойствам в вашем файле конфигурации.

...