Question

I'm learning how to use System.Configuration in .NET and would like to know if there is a way to infinitely nest configuration settings in my web.config file.

Let's say I have two types of objects - a Page, and a PageGroup. A Page represents a real page on my site, and a PageGroup represents a collection of Pages and (possibly) other PageGroups.

My web.config file might contain something like:

<pagegroup name="outer_group">
    <page name="page1" url="page1.htm" />
    <page name="page2" url="page2.htm" />
    <pagegroup name="middle_group">
        <page name="page3" url="page3.htm" />
        <pagegroup name="inner_group">
            ...and so on...
        </pagegroup>
    </pagegroup>
</pagegroup>

My limited understanding of Configuration classes leads me to believe that this is not what they were designed for - but I'm hoping that I'm wrong.

Is it possible to use ConfigurationElementCollections and ConfigurationElements (or any other applicable ConfigurationClasses) in this manner?

Was it helpful?

Solution

You basically have two different types of items to deal with:

  • a ConfigurationSectionGroup is a container for other elements, most notably configuration sections (or other configuration section groups). The section group itself doesn't have any configuration properties or attributes - it's just a container for configuration sections

  • the ConfigurationSection is the item that can contain attributes, elements, collections etc. with the actual configuration settings that you want to store

As far as I know, you can nest configuration section groups as deep as you need to, but you cannot nest anything inside a configuration section.

For a great intro and lots of background info, check out Jon Rista's three-part series on .NET 2.0 configuration up on CodeProject.

Highly recommended, well written and extremely helpful!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow