Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 653
staterium Avatar asked Jul 21 '09 08:07

staterium


1 Answers

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.

like image 164
Kirtan Avatar answered Oct 15 '22 03:10

Kirtan