Пользовательский раздел конфигурации ASP.NET - PullRequest
6 голосов
/ 21 июля 2009

Я хочу создать пользовательский раздел конфигурации для обработки уведомлений по электронной почте. Конфигурация должна быть в следующем формате:

<configSections>
    <sectionGroup name="notifications">
        <section name="notification" type="NotificationConfiguration" allowLocation="true" allowDefinition="Everywhere" />
    </sectionGroup>
</configSections>
...
<notifications>
    <notification name="..." enabled="..." delayInMinutes="...">
        <recipients>
            <add email="..." />
            <add email="..." />
            <add email="..." />
        </recipients>
    </notification>
    <notification name="..." enabled="..." delayInMinutes="...">
        <recipients>
            <add email="..." />
            <add email="..." />
            <add email="..." />
        </recipients>
    </notification>
</notifications>
...

Я могу заставить это работать нормально, используя NotificationConfiguration config = (NotificationConfiguration) ConfigurationManager.GetSection("notifications\notification"), но это обслуживает только один <notification> элемент. Как выполнить несколько элементов для размещения более одного уведомления?

Класс, который обрабатывает это, довольно длинный, поэтому я не буду вставлять его сюда, но его можно скачать отсюда:

http://files.getdropbox.com/u/288235/NotificationConfiguration.cs

Спасибо.

1 Ответ

1 голос
/ 21 июля 2009

Вы можете использовать ConfigurationElementCollection Class .

Справку о том, как его использовать, можно найти в CodeProject .

РЕДАКТИРОВАТЬ: Вы можете создать <NotificationsGroup /> внешний элемент, а затем поместить все свои элементы уведомлений в эту группу. Таким образом, вы сможете достичь того, чего хотите.

РЕДАКТИРОВАТЬ 2:

<configSections>
    <sectionGroup name="NotificationsGroup">
        <section name="NotificationsGroup" type="NotificationGroupConfiguration" allowLocation="true" allowDefinition="Everywhere" />
    </sectionGroup>
</configSections>

<NotificationsGroup>
    <Notifications>
    </Notifications>
    ... Multiple notifications go here, instead of one.
    <Notifications>
    </Notifications>
</NotificationsGroup>

Это означает, что NotificationsGroup будет содержать коллекцию элементов уведомлений.

...