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

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

< Лекция 8 || Лекция 9: 12345
Создание раздела с помощью SingleTagSectionHandler

Обработчик раздела SingleTagSectionHandler используется аналогично двум предыдущим обработчикам разделов, за исключением того, что все пары ключ/значение сохраняются не в отдельных элементах <add>, а в одном элементе раздела. Первым шагом является объявление раздела в разделе <configSections>.

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

Раздел <myAppSettingsSingle> будет обрабатываться SingleTagSectionHandler. Затем можно добавить в свой настроечный файл раздел, который содержит несколько пар ключ/значение.

<myAppSettingsSingle Key1="Our first value"
  Key2="Our Second value" />

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

C#

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

VB.NET

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

Данный обработчик похож на остальные обработчики, но для добавления значений не используется элемент <add>. Это уменьшает размер разделов настроек и упрощает чтение.

Вложенные разделы настроек

Собственные разделы настроек бывают вложены в группы разделов. Это полезно при организации нескольких групп коллекций. Первым шагом является объявление раздела в требуемой группе разделов раздела <configSections>.

<configSections>
  <sectionGroup name="Microsoft" >
    <sectionGroup name="Settings" >
      <section name="myAppSettingsSingle"
        type="System.Configuration.SingleTagSectionHandler,
        System, Version=1.0.5000.0, Culture=neutral,
        PublicKeyToken=b77a5c561934e089" />
    </sectionGroup>
  </sectionGroup>
</configSections>

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

<Microsoft>
  <Settings>
    <myAppSettingsSingle Key1="Our first value"
      Key2="Our Second value" />
  </Settings>
</Microsoft>

В примере раздел настроек обрабатывается SingleTagSectionHandler. Ниже приведен код для получения этих значений в приложении.

C#

HashTable htMyAppSettings = (HashTable) ConfigurationSettings.
  GetConfig("Microsoft/Settings/myAppSettingsSingle");
Response.Write(htMyAppSettings["Key1"].ToString());
Response.Write(htMyAppSettings["Key2"].ToString());

VB.NET

Dim htMyAppSettings As HashTable = _
  CType(ConfigurationSettings.GetConfig("Microsoft/Settings/" _
  & "myAppSettingsSingle"), HashTable)
Response.Write(htMyAppSettings("Key1").ToString())
Response.Write(htMyAppSettings("Key2").ToString())

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

Создание собственного раздела с собственным обработчиком раздела

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

Изучение интерфейса IConfigurationSectionHandler

Об этом интерфейсе уже упоминалось выше, но теперь мы рассмотрим его более подробно. Интерфейс IConfigurationSectionHandler применяется для создания обработчика раздела настроек, который используется архитектурой конфигурирования .NET. Интерфейс IConfigurationSectionHandler требует, чтобы класс включал метод Create, который возвращает объект. Ниже приведен пример класса для реализации интерфейса IConfigurationSectionHandler.

C#

using System;
using System.Data;
using System.Data.SqlClient;
using System.XML;
using System.Configuration;

namespace MicrosoftConfig
{
  public class CustomHandlerExample : IConfigurationSectionHandler
  {
    public object Create(object parent, object configContext,
      XmlNode section)
    {
      //Handler Code Here
    }
  }
}

VB.NET

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.XML
Imports System.Configuration

Namespace MicrosoftConfig
  Public Class CustomHandlerExample
    Implements IConfigurationSectionHandler
    Public Function Create(parent As Object, configContext As _
      Object, section As XmlNode) As Object Implements _
      IConfigurationSectionHandler.Create
      'Handler Code Here
    End Function
  End Class
End Namespace
< Лекция 8 || Лекция 9: 12345
Геннадий Щербаков
Геннадий Щербаков

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