Опубликован: 24.01.2007 | Доступ: свободный | Студентов: 1250 / 82 | Оценка: 4.37 / 4.17 | Длительность: 14:27:00
ISBN: 978-5-94774-627-3
Лекция 9:

Создание собственных параметров

< Лекция 8 || Лекция 9: 12345
Аннотация: В последней лекции рассматривается, как создавать и использовать собственные разделы настроек и собственные обработчики разделов настроек. Собственные разделы настроек применяются для различных целей и очень полезны при развертывании приложений или элементов управления.

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

Создание и использование собственных разделов

До сих пор мы рассматривали, как использовать разделы настроек, которые устанавливаются вместе с Microsoft .NET Framework. В этой лекции будет рассказано, как создавать и использовать в приложениях собственные разделы настроек. Собственные разделы настроек позволяют решить большое количество различных проблем. Главным преимуществом собственных разделов настроек является то, что они позволяют изменять настроечные параметры, не требуя при этом перекомпиляции приложения.

Изучение обработчиков .NET

Обработчики разделов настроек интерпретируют и используют разделы настроек. (Обработчики в достаточной степени рассмотрены в "лекции 2" .) Имеется несколько обработчиков разделов настроек, включенных в пространство имен System.Configuration, которые используются для разделов настроек по умолчанию. Ниже приведены обработчики разделов настроек, включенные в пространство имен System.Configuration.

  • System.Configuration.IgnoreSectionHandler. Данный обработчик не выполняет никаких действий с параметрами. Он используется для разделов <startup>, <mscorlib> и <runtime>. Используйте его только в том случае, если вы планируете вручную читать параметры, не используя обработчиков раздела настроек.
  • System.Configuration.NameValueFileSectionHandler. Данный обработчик раздела интерпретирует раздел <appSettings> (подробно обсуждается в "лекции 2" ).
  • System.Configuration.DictionarySectionHandler. Данный обработчик раздела читает параметры и собирает объект Hashtable, который хранит различные ключи и значения.
  • System.Configuration.SingleTagSectionHandler. Данный обработчик раздела читает параметры из собственного раздела, содержащего несколько значений.

Эти обработчики разделов настроек включены по умолчанию в пространство имен System.Configuration. В других пространствах имен имеется множество других обработчиков, но они созданы специально для определенных разделов и не могут помочь в создании вашего собственного раздела. Разделы, включенные в пространство имен System.Configuration, полезны при создании собственных разделов настроек, так как вместо создания своего собственного обработчика раздела можно воспользоваться готовыми обработчиками.

Создание собственного раздела с помощью готовых обработчиков

Первым типом собственных разделов настроек является раздел, который работает с одним из обработчиков разделов, включенных в состав пространства имен System.Configuration. Четыре включенных в него обработчика позволяют быстро создавать собственные разделы настроек без необходимости в написании какого-либо кода для их обработки – нужно только написать код для чтения значений.

Создание раздела с помощью NameValueFileSectionHandler

Обработчик раздела NameValueFileSectionHandler облегчает создание собственного раздела, аналогичного разделу <appSettings>. Этот раздел хранит несколько пар ключ/значение, которые затем могут быть прочитаны через объект NameValueCollection. Первым шагом является объявление раздела, включая имя раздела и обработчика раздела, используемого для интерпретации раздела, в разделе <configSections> файла machine.config сервера или файла web.config приложения.

<configSections>
  <section name="myAppSettings"
    type="System.Configuration.NameValueFileSectionHandler,
    System, Version=1.0.5000.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" />
</configSections>

Это объявление позволяет создать в своем настроечном файле раздел с именем <myAppSettings>, обрабатываемый обработчиком раздела NameValueFileSectionHandler. Следующий шаг состоит в добавлении этого раздела в настроечный файл.

<myAppSettings>
  <add key="Key1" value="Our first value" />
  <add key="Key2" value="Our Second value" />
</myAppSettings>

Данный раздел интерпретируется NameValueFileSectionHandler и будет доступен вашим приложениям через объект ConfigurationSettings. Ниже приведен код для доступа к ключам, добавленным в раздел.

C#

NameValueCollection nvcMyAppSettings =
  ConfigurationSettings.GetConfig("myAppSettings");
Response.Write(nvcMyAppSettings["Key1"].ToString());
Response.Write(nvcMyAppSettings["Key2"].ToString());

VB.NET

Dim nvcMyAppSettings As NameValueCollection = _
  ConfigurationSettings.GetConfig("myAppSettings")
Response.Write(nvcMyAppSettings("Key1").ToString())
Response.Write(nvcMyAppSettings("Key2").ToString())

Метод GetConfig объекта ConfigurationSettings создает коллекцию NameValueCollection, содержащую все пары ключ/значение, добавленные в раздел. Вы должны передать в метод GetConfig имя своего раздела. Если он является подразделом или частью группы разделов, перед именем раздела нужно указать группу разделов или родительский раздел. Например, если раздел находится в группе разделов Microsoft, при вызове метода GetConfig следует указать "Microsoft/MyAppSettings".

Создание раздела с помощью DictionarySectionHandler

Еще одним обработчиком разделов по умолчанию, который можно использовать для создания разделов, содержащих пары ключ/значение, является DictionarySectionHandler. Этот обработчик работает аналогично NameValueFileSectionHandler, за исключением того, что вместо коллекции ключ/значение он возвращает объект Hashtable. Процедура аналогична созданию собственного раздела с помощью NameValueFileSectionHandler. Первым шагом является объявление раздела в разделе <configSections>.

<configSections>
  <section name="myAppSettingsHash"
    type="System.Configuration.DictionarySectionHandler, System,
    Version=1.0.5000.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089" />
</configSections>

После того как в раздел <configSections> добавлен этот элемент, создайте в настроечном файле раздел <myAppSettingsHash>, который будет обрабатываться DictionarySectionHandler. Ниже приведен раздел, добавленный в настроечный файл.

<myAppSettingsHash>
  <add key="Key1" value="Our first value" />
  <add key="Key2" value="Our Second value" />
</myAppSettingsHash>

Этот раздел будет интерпретироваться DictionarySectionHandler. Значения могут быть прочитаны с помощью того же метода GetConfig, использующего DictionarySectionHandler. Ниже приведен код для доступа к значениям из настроечного файла.

C#

HashTable htMyAppSettings = (HashTable)
  ConfigurationSettings.GetConfig("myAppSettingsHash");
Response.Write(htMyAppSettings["Key1"].ToString());
Response.Write(htMyAppSettings["Key2"].ToString());

VB.NET

Dim htMyAppSettings As HashTable = _
  CType(ConfigurationSettings.GetConfig("myAppSettingsHash"), _
  HashTable)
Response.Write(htMyAppSettings("Key1").ToString())
Response.Write(htMyAppSettings("Key2").ToString())

Как и при работе с NameFileValueSectionHandler, для создания Hashtable, заполненного парами ключ/значение, указанными в этом разделе, используется метод GetConfig и имя раздела.

< Лекция 8 || Лекция 9: 12345
Геннадий Щербаков
Геннадий Щербаков

В начале года получил код dreamspark  H4RQ9-QJ6FD-YJWJT-P6FVF-HGXQZ. При  его вводе- сообщение что он просрочен.