Ответ 1
Посмотрите на функцию ConfigurationManager.OpenExeConfiguration
для загрузки в файл конфигурации.
Затем в классе System.Configuration.Configuration
, который вы вернетесь из ConfigurationManager.OpenExeConfiguration
, вы захотите посмотреть SectionGroups
имущество. Это вернет ConfigurationSectionGroupCollection
, в котором вы найдете раздел applicationSettings
.
В ConfigurationSectionGroupCollection
будет существовать свойство Sections
, которое содержит объекты Executable
и FirstModule
ConfigurationSection
.
var config = ConfigurationManager.OpenExeConfiguration(pathToExecutable);
var applicationSettingSectionGroup = config.SectionGroups["applicationSettings"];
var executableSection = applicationSettingSectionGroup.Sections["Executable"];
var firstModuleSection = applicationSettingSectionGroup.Sections["FirstModule"];
После получения объектов ConfigurationSectionGroupCollection
или ConfigurationSection
вы захотите проверить null
. Если они ноль, они не существуют в файле configuraiton.
Вы также можете получить разделы, используя ConfigurationManager.GetSection
var executableSection = (ClientSettingsSection)ConfigurationManager
.GetSection("applicationSettings/Executable");
var firstModuleSection = (ClientSettingsSection)ConfigurationManager
.GetSection("applicationSettings/FirstModule");
Опять же, если объекты null
, они не существуют в файле конфигурации.
Чтобы получить список всех названий и групп разделов, которые вы могли бы сделать:
var config = ConfigurationManager.OpenExeConfiguration(pathToExecutable);
var names = new List<string>();
foreach (ConfigurationSectionGroup csg in config.SectionGroups)
names.AddRange(GetNames(csg));
foreach (ConfigurationSection cs in config.Sections)
names.Add(cs.SectionInformation.SectionName);
private static List<string> GetNames(ConfigurationSectionGroup configSectionGroup)
{
var names = new List<string>();
foreach (ConfigurationSectionGroup csg in configSectionGroup.SectionGroups)
names.AddRange(GetNames(csg));
foreach(ConfigurationSection cs in configSectionGroup.Sections)
names.Add(configSectionGroup.SectionGroupName + "/" + cs.SectionInformation.SectionName);
return names;
}