Configuration sections for app.config/web.config. Useful to create. Hard to remember how to create. Here's a simple template.
Every now and then I find myself needing to create a custom configuration section for a .NET application or module that I’m building. It’s not something I do often enough to remember how to do it by heart though so I usually consult Google, only there I often find guides that are either to long and/or verbose or doesn’t quite match how I like to do it. So I end up digging up some of my old code where I’ve created a custom configuration section. While that works it takes more time than it should so I thought I’d help myself by posting a quick little guide here.
Creating a basic Configuration Section
Given the class below…
using System.Configuration; namespace ConfigurableModule { public class Configuration : ConfigurationSection { public static Configuration GetConfiguration() { Configuration configuration = ConfigurationManager .GetSection("myConfigurableModule") as Configuration; if (configuration != null) return configuration; return new Configuration(); } [ConfigurationProperty("message", IsRequired = false)] public string Message { get { return this["message"] as string; } } } }
…and the following in our applications configuration file (app.config/web.config)…
<configuration> <configSections> <section name="myConfigurableModule" type="ConfigurableModule.Configuration, ConfigurableModule"/> </configSections> <myConfigurableModule message="Hello world!" /> <!-- Optionally other configuration --> </configuration>
…we can get the Message property from the configuration like this:
string messageFromConfiguration = ConfigurableModule.Configuration .GetConfiguration().Message ;
Storing the configuration section in a separate file
We can move our configuration section to a separate file using the configSource attribute. To do that in the above example we change it like this:
<configuration> <configSections> <section name="myConfigurableModule" type="ConfigurableModule.Configuration, ConfigurableModule"/> </configSections> <myConfigurableModule configSource="myConfigurableModule.config" /> <!-- Optionally other configuration --> </configuration>
The file myConfigurableModule.config should then look like this:
<myConfigurableModule message="Hello world from a separate file!" />
Creating ConfigurationElements, ConfigurationElementCollections etc
The above is usually all I need, but if a more extensive configuration is needed, requiring separate elements etc there is a more extensive guide on MSDN.
PS. For updates about new posts, sites I find useful and the occasional rant you can follow me on Twitter. You are also most welcome to subscribe to the RSS-feed.
Similar articles
- Manage multiple web.config files using Phantom
- Handling multiple ASP.NET configuration files with build events
- Extending Phantom
- Automatically notify Google and MSN when your site is updated
- Template for RESTish JSON service with WCF
- Getting property and method names using static reflection in C#
- Learning Scala part four – Classes and Constructors
- A neat little type inference trick with C#
Comments
comments powered by Disqus