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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With