Reputation: 2928
I've set up some custom config sections in my App.Config, such that I now have a configSection that looks like this.
<configSections>
<section name="Section1" type="ConfigSections.MySection, MyNamespace"/>
<section name="Section2" type="ConfigSections.MySection, MyNamespace"/>
<section name="Section3" type="ConfigSections.MySection, MyNamespace"/>
</configSections>
What I want to do is to read this section in code in order to find out at runtime what sections I have. I have tried:
var mySections = ConfigurationManager.GetSection("configSections");
but this returns null. I'm sure I'm missing something simple, but I cannot find anything about how to do this.
Thanks
Upvotes: 4
Views: 10542
Reputation: 49290
Use the Configuration.Sections
-property to get the names of the declared configuration sections. Then, optionally if you need, use ConfigurationManager.GetSection()
to retrieve an individual section.
Note that you may want to use the value of the SectionInformation.IsDeclared
or ConfigSource
of the respective ConfigurationSection.SectionInformation
to find out of the section was actually declared in your configuration file, or is inherited from machine.config
or otherwise.
Example:
var cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var localSections = cfg.Sections.Cast<ConfigurationSection>()
.Where(s => s.SectionInformation.IsDeclared);
Finally, note that this approach will only get you configuration sections. It will not return configuration sections, which are itself inside a <sectionGroup>
. For them, you would first need iterate over Configuration.SectionGroups
, which has it's own Sections
-property that contains the per section group sections. It can also contain nested section groups, again accessible via the SectionGroups
property of each ConfigurationSectionGroup
instance.
Upvotes: 6
Reputation: 1983
if put all the sections into a section group this would work:
<configSections>
<sectionGroup name="FMGlobal.Common.SecuritySubsystem.ADAzManFeed">
<section name="ADFolders" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
var NVC = (ConfigurationManager.GetSection( _
"FMGlobal.Common.SecuritySubsystem.ADAzManFeed")
Upvotes: 0