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