2009-11-20 3 views
14

Я новичок C#, работающий с .NET 3.5, и я хотел бы сохранить кучу значений по умолчанию приложения в App.config, так как настройки могут отличаться в зависимости от среды сервера (например, разработка, постановка, производство). То, что я хочу сделать, похоже на то, что описано в this StackOverflow article, но я также хочу иметь возможность использовать нестрочные значения (например, int, bool). Нечто подобное (имя-значения являются лишь примерами, кстати):Использование App.config для установки сильно типизированных переменных

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <applicationSettings> 
     <MyApp> 
      <setting name="InitText" serializeAs="String"> 
       <value>Hello</value> 
      </setting> 
      <setting name="StartAt" serializeAs="Integer"> 
       <value>5</value> 
      </setting> 
      <setting name="IsWeekend" serializeAs="Boolean"> 
       <value>True</value> 
      </setting> 
     </MyApp> 
    </applicationSettings> 
</configuration> 

Может кто-нибудь привести пример того, как это сделать, и как получить значения через C#? Я видел много примеров, которые требуют использования и, но я не уверен, нужны ли мне эти элементы, и если да, то как их создавать.

ответ

28

Что касается использования Application Settings architecture .NET Framework. Вы можете иметь строго типизированный доступ к значениям по умолчанию.

В проекте приложения Windows файл настроек создается автоматически в папке «Ресурсы». Затем вы можете добавить параметры приложения, которые сохраняются в файле App.config так же, как вы показали в своем вопросе.

Например:

int i = Settings.Default.IntSetting; 

bool b = Settings.Default.BoolSetting; 

Edit: Если ваш проект не содержит файл настройки, вы всегда можете добавить один путем добавления нового элемента, а затем выбрав Параметры файла. (Щелкните правой кнопкой мыши файл проекта и выполните: Add-> New Item-> Settings File). В моем случае я назвал его «Настройки», но вы можете назвать его как хотите.

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

+0

Я думаю, что это то, что мне нужно, но я не могу получить доступ к переменным через C#. Когда я набираю «Настройки». Intellisense ничего не видит ... –

+1

Это не запекается в фреймворк, это скорее IDE. Когда вы добавляете файл '.settings' в ваш проект C#/VB, он используется для генерации кода для класса' Settings', который обертывает настройки конфигурации как свойства соответствующего типа и выполняет все необходимые отбрасывания и т. Д. –

+0

Благодарим вас за разъяснение - я ценю это. –

11
Boolean isWeekend = Convert.ToBoolean(ConfigurationManager.AppSettings["IsWeekend"]) 
+6

Или Boolean.TryParse (...). http://msdn.microsoft.com/en-us/library/system.boolean.tryparse.aspx –

+8

не приводит к тому, что часть требований «строго типизированных переменных» сохраняется, но вы сохраняете строку в приложении .config –

+0

Да, я не хочу переписывать строку как правильный тип. –

2

То, что предлагалось JayG, может быть выполнено с помощью Visual Studio автоматически. Используйте мастер настройки appsettings as described in the MSDN. Также может стоить целая инфраструктура Application Settings.

-1

Похоже, вы хотите иметь пользовательский <configSection>. В принципе, он работает следующим образом:

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

Вы можете найти все виды информации о MSDN library об этом. Примерами являются asp.net, но они отлично работают с конфигурациями приложений.

+0

Для этого вам не нужно писать настраиваемую конфигурацию. – BrainSlugs83

Смежные вопросы