.NET Framework Class Library
ConfigurationSectionGroup Class

Updated: November 2007

Represents a group of related sections within a configuration file.

Namespace:  System.Configuration
Assembly:  System.Configuration (in System.Configuration.dll)

Visual Basic (Declaration)
Public Class ConfigurationSectionGroup
Visual Basic (Usage)
Dim instance As ConfigurationSectionGroup
C#
public class ConfigurationSectionGroup
Visual C++
public ref class ConfigurationSectionGroup
J#
public class ConfigurationSectionGroup
JScript
public class ConfigurationSectionGroup

Because some configuration sections are related, it is often convenient to group them together within a single section group. The ConfigurationSectionGroup class represents the <sectionGroup> XML element within a configuration file.

Use the Sections property to access the sections contained in this ConfigurationSectionGroup object.

A ConfigurationSectionGroup object can also contain other ConfigurationSectionGroup objects, which can be accessed through the SectionGroups property.

The following code example shows how to use the ConfigurationSectionGroup class.

Visual Basic
Imports System
Imports System.Collections
Imports System.Configuration



Class UsingConfigurationSectionGroup
   Private Shared indentLevel As Integer = 0

    Public Shared Sub Main(ByVal args() As String)

        ' Get the application configuration file.
        Dim config _
        As System.Configuration.Configuration = _
        ConfigurationManager.OpenExeConfiguration( _
        ConfigurationUserLevel.None)

        ' Get the collection of the section groups.
        Dim sectionGroups _
        As ConfigurationSectionGroupCollection = _
        config.SectionGroups
        ShowSectionGroupCollectionInfo(sectionGroups)
    End Sub 'Main

   Shared Function getSpacer() As String
      Dim spacer As String = ""
      Dim i As Integer
      For i = 0 To indentLevel - 1
         spacer = spacer + "    "
      Next i
      Return spacer
   End Function 'getSpacer


    Overloads Shared Sub ForceDeclaration( _
    ByVal sectionGroup As ConfigurationSectionGroup)

        ' Get the application configuration file.
        Dim config _
        As System.Configuration.Configuration = _
        ConfigurationManager.OpenExeConfiguration( _
        ConfigurationUserLevel.None)

        sectionGroup.ForceDeclaration()

        config.Save(ConfigurationSaveMode.Full)

        Console.WriteLine( _
        "Forced declaration for the group: {0}", _
        sectionGroup.Name)
    End Sub 'ForceDeclaration

    Overloads Shared Sub ForceDeclaration( _
    ByVal sectionGroup _
    As ConfigurationSectionGroup, _
    ByVal force As Boolean)
        sectionGroup.ForceDeclaration(force)

        Console.WriteLine( _
        "Forced declaration for the group: {0} is {1}", _
        sectionGroup.Name, force.ToString())
    End Sub 'ForceDeclaration

    Shared Sub ShowSectionGroupCollectionInfo( _
    ByVal sectionGroups _
    As ConfigurationSectionGroupCollection)
        Dim groupName As String
        For Each groupName In sectionGroups.Keys
            Dim sectionGroup _
            As ConfigurationSectionGroup = _
            CType(sectionGroups(groupName), _
            ConfigurationSectionGroup)
            ShowSectionGroupInfo(sectionGroup)
            If sectionGroup.Name = "system.web" Then
                ForceDeclaration(sectionGroup, True)
            End If
        Next groupName
    End Sub 'ShowSectionGroupCollectionInfo

    Shared Sub ShowSectionGroupInfo( _
    ByVal sectionGroup As ConfigurationSectionGroup)
        ' Get the group name including the 
        ' parent group names.
        Console.WriteLine((getSpacer() + _
        "Section Group Name: " + sectionGroup.Name))
        ' Get the group name without including
        ' the parent group names.
        Console.WriteLine((getSpacer() + _
        "Section Group Name: " + _
        sectionGroup.SectionGroupName))
        indentLevel += 1

        Console.WriteLine((getSpacer() + _
        "Type: " + sectionGroup.Type))
        Console.WriteLine((getSpacer() + _
        "Is Group Required?: " + _
        sectionGroup.IsDeclarationRequired.ToString()))
        Console.WriteLine((getSpacer() + _
        "Is Group Declared?: " + _
        sectionGroup.IsDeclared.ToString()))
        Console.WriteLine((getSpacer() + _
        "Contained Sections:"))

        indentLevel += 1

        Dim sectionCollection _
        As ConfigurationSectionCollection = _
        sectionGroup.Sections
        Dim sectionName As String
        For Each sectionName In sectionCollection.Keys
            Dim section As ConfigurationSection = _
            CType(sectionCollection( _
            sectionName), ConfigurationSection)
            Console.WriteLine((getSpacer() + _
            "Section Name:" + _
            section.SectionInformation.Name))
        Next sectionName
        indentLevel -= 1

        Console.WriteLine((getSpacer() + _
        "Contained Section Groups:"))

        indentLevel += 1

        Dim sectionGroups _
        As ConfigurationSectionGroupCollection = _
        sectionGroup.SectionGroups
        ShowSectionGroupCollectionInfo(sectionGroups)
        indentLevel -= 1
    End Sub 'ShowSectionGroupInfo
End Class 'UsingConfigurationSectionGroup 

C#
using System;
using System.Collections;
using System.Configuration;

namespace Samples.AspNet
{
    class UsingConfigurationSectionGroup
    {
        static int indentLevel = 0;

        static void Main(string[] args)
        {

            // Get the application configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None);

            // Get the collection of the section groups.
            ConfigurationSectionGroupCollection 
                sectionGroups = config.SectionGroups;
            ShowSectionGroupCollectionInfo(sectionGroups);
        }

        static String getSpacer()
        {
            String spacer = "";
            for (int i = 0; i < indentLevel; i++)
            {
                spacer = spacer + "    ";
            }
            return spacer;
        }

        static void ForceDeclaration(
            ConfigurationSectionGroup sectionGroup)
        {

            // Get the application configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None);

            sectionGroup.ForceDeclaration();

            config.Save(ConfigurationSaveMode.Full);

            Console.WriteLine(
                "Forced declaration for the group: {0}", 
                sectionGroup.Name);
        }

        static void ForceDeclaration(
            ConfigurationSectionGroup sectionGroup, 
            bool force)
        {
            sectionGroup.ForceDeclaration(force);

            Console.WriteLine(
                "Forced declaration for the group: {0} is {1}",
                sectionGroup.Name, force.ToString());
        }

        static void ShowSectionGroupCollectionInfo(
            ConfigurationSectionGroupCollection sectionGroups)
        {
            foreach (String groupName in sectionGroups.Keys)
            {
                ConfigurationSectionGroup sectionGroup = 
                    (ConfigurationSectionGroup)sectionGroups[groupName];
                ShowSectionGroupInfo(sectionGroup);
                if (sectionGroup.Name == "system.web")
                {
                    ForceDeclaration(sectionGroup, true);
                }

            }
        }

        static void ShowSectionGroupInfo(
            ConfigurationSectionGroup sectionGroup)
        {
            // Get the group name including the 
            // parent group names.
            Console.WriteLine(getSpacer() + 
                "Section Group Name: " + 
                sectionGroup.Name);  

            // Get the group name without including
            // the parent group names.
            Console.WriteLine(getSpacer() +
                "Section Group Name: " + 
                sectionGroup.SectionGroupName);

            indentLevel++;

            Console.WriteLine(getSpacer() + 
                "Type: " + sectionGroup.Type);

            Console.WriteLine(getSpacer() +
                "Is Group Required?: " +
                sectionGroup.IsDeclarationRequired);            

            Console.WriteLine(getSpacer() + 
                "Is Group Declared?: " + 
                sectionGroup.IsDeclared);

            Console.WriteLine(getSpacer() + 
                "Contained Sections:");

            indentLevel++;

            ConfigurationSectionCollection sectionCollection = 
                sectionGroup.Sections;
            foreach (String sectionName in sectionCollection.Keys)
            {
                ConfigurationSection section = 
                    (ConfigurationSection)sectionCollection[sectionName];
                Console.WriteLine(getSpacer() + "Section Name:" 
                    + section.SectionInformation.Name);
            }

            indentLevel--;

            Console.WriteLine(getSpacer() + 
                "Contained Section Groups:");

            indentLevel++;

            ConfigurationSectionGroupCollection sectionGroups = 
                sectionGroup.SectionGroups;
            ShowSectionGroupCollectionInfo(sectionGroups);

            indentLevel--;
        }
    }

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Page view tracker