Маршаллінг даних конфігураційного файлу в Visual C # (Sharp)

Коли ми хочемо використовувати в конфігураційному файлі спеціальний вузол, то нам потрібно реалізувати спеціальний клас, похідний від класу SystemConfigurationConfigurationSection Цей спеціальний клас потрібно для обробки і структурування даних в файлі конфігурації в формат, в якому користувач може маніпулювати ними Іншими словами, ми маршаллізуем дані з конфігураційного файлу в середу NET

Інфраструктура NET надає засоби для полегшення маршаллізаціі у вигляді типів класів, які дозволяють явно повязувати атрибут або ключове слово XML з якої-небудь змінної Наприклад, припустимо, ви хочете створити пекрестную посилання між XML-атрибутом easyname і типом NET Для цього спочатку потрібно за допомогою типу conf igurationProperty визначити характер і тип властивості, як показано в наступному коді:

_propEasyName = new ConfigurationProperty(

&quoteasyname&quot, typeof(string),

null, ConfigurationPropertyOptionsIsRequired)

Конструктор conf igurationProperty має чотири параметри:

• easyname – Визначає ідентифікатор атрибута XML, для якого буде створена перехресне посилання

• typeof (string) – вказує тип атрибута, який також може містити

double або int для вказівки числа

• null – вказує значення за замовчуванням атрибута, якщо атрибут відсутня

• conf igurationPropertyOptions IsRequired-вказує певні характістікі атрибута в цьому прикладі задано, що атрибут є обовязковим

ПРИМІТКА

Для типу ConfigurationProperty існують множинні конструктори Долнітельную інформацію з даного питання можна знайти в документації MSDN (http://msdn2microsoftcom/en-us/library/systemconfigurationconfigurationproperty

.configurationpropertyaspx)

Визначивши властивість, для нього необхідно створити перехресне посилання на свотво І базовий клас Conf igurationSection:

[ConfigurationProperty(&quoteasyname&quot, IsRequired = true)] public string EasyName {

get {

return (string)base[_propEasyName]

}

}

При кожному зверненні до властивості EaseName асоційовані з цим свойс атрибути надають перехресне посилання з конфігураційним файлом

При кожному виклику властивості викликається базовий індексатор з членом даних, який посилається на configurationProperty, і виконує маршаллінг даних з конфігураційного файлу в тип NET

Далі наводиться повний вихідний код обробника XML-вузла (Добав-

ляетс я в збірку у Definitions): using SystemConfiguration

namespace Definitions

{

public class LoaderSection : ConfigurationSection { static ConfigurationProperty _propEasyName static ConfigurationProperty _propTypeName static ConfigurationProperty „propAssemblyName

static ConfigurationPropertyCollection „properties

static LoaderSection() {

_propEasyName = new ConfigurationProperty(

&quoteasyname&quot, typeof(string),

null, ConfigurationPropertyOptionsIsRequired)

_propTypeName = new ConfigurationProperty(

&quottypename&quot, typeof(string),

null, ConfigurationPropertyOptionsIsRequired)

_propAssemblyName = new ConfigurationProperty(

&quotassemblyname&quot, typeof(string),

null,  ConfigurationPropertyOptionsIsRequired)

„properties = new ConfigurationPropertyCollection()

„propertiesAdd(_propEasyName)

„propertiesAdd(_propTypeName)

„propertiesAdd(_propAssemblyName)

}

[ConfigurationProperty(&quoteasyname&quot, IsRequired = true)] public string EasyName {

get {

return  (string)base[„propEasyName]

}

}

[ConfigurationProperty(&quottypename&quot, IsRequired = true)] public string TypeName {

get {

return  (string)base[„propTypeName]

}

}

[ConfigurationPropertyCassemblyname&quot, IsRequired = true)] public string AssemblyName {

get {

return  (string)base[_propAssemblyName]

}

}

}

}

Клас Loadersection виконує два завдання: повідомляє конфігураційної інфртруктуре про вимоги Loadersection і надає легкий у використанні інтерфейс API до конфігураційним даними У той час як виконання першого завдання є приємною можливістю, друга можливість є абсолютно необхідною

Оголошення багатьох компонентів структури даних як stati c пояснюється тим, що ми використовуємо ці члени даних в якості опорних, щоб полегшити полінуватися значень для членів даних Щоб розібратися з тим, що відбувається в цьому ке, розглянемо приклад вилучення значень з конфігураційного файлу

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*