staterium
staterium

Reputation: 1978

Custom ASP.NET Configuration Section

I want to create a custom configuration section to handle email notifications. The configuration needs to be in the following format:

<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>
...

I can get this to work fine using NotificationConfiguration config = (NotificationConfiguration) ConfigurationManager.GetSection("notifications\notification"), but this only caters for one <notification> element. How do I accomplish multiple elements to accommodate more than one notification?

The class that handles this is quite lengthy, so I won't paste it here, but it can be downloaded from here:

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

Thanks.

Upvotes: 6

Views: 3505

Answers (1)

Kirtan
Kirtan

Reputation: 21695

You can use the ConfigurationElementCollection Class.

A reference of how to use it can be found on CodeProject.

EDIT: You can create a <NotificationsGroup /> outer element, and then put all your notification elements inside that group. This way, you'll be able to achieve what you want to achieve.

EDIT 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>

This means that NotificationsGroup will contain the element collection of Notifications.

Upvotes: 1

Related Questions