2015-07-16 4 views
1

Есть ли способ программно получить имена разделов, выполнив цикл вместо жесткого кодирования имен самостоятельно?Получить имена разделов программно из App.config C#

Например:

<configuration> 
    <configSections> 
    <section name="Test1" type="System.Configuration.NameValueSectionHandler"/> 
    <section name="Test2" type="System.Configuration.NameValueSectionHandler"/> 
    </configSections> 

жестко прописывать:

var section = ConfigurationManager.GetSection("Test1") as NameValueCollection; 
var section = ConfigurationManager.GetSection("Test2") as NameValueCollection; 

Я не хочу, чтобы жестко закодировать имена секций test1 и test2 в коде.

+0

Является ли это помощь: http://stackoverflow.com/questions/4670669/how-do-you-use-sections-in-c -sharp-4-0-app-config – PaulF

+0

, поэтому я должен использовать раздел Group и назначить для него конкретное имя группыгрупп? есть ли способ избежать жесткого кодирования имен? – my779

+0

Вам не нужно использовать группу разделов, но разделы включены во все разделы, используемые в приложении, поэтому поиск конкретных для вас будет сложнее. Используя разделгруппа, вы получаете только созданные вами разделы, но вам может потребоваться жесткий код, или, по крайней мере, дать ему легко идентифицируемое имя (имя приложения как префикс?), Можно сделать это с помощью названий разделов, если вы их не группируете) I не использовали ConfigurationManager, чтобы узнать, есть ли более простые способы. (Если вы ищете в отладчике, имена находятся в разделе «Ключи»). – PaulF

ответ

1

Вы можете получить имена раздел группы, как это:

static void Main(string[] args) 
    { 
     string configPath = @"..\..\App.config"; 
     var map = new ExeConfigurationFileMap(); 
     map.ExeConfigFilename = configPath; 
     var config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
     for (int i = 0; i < config.SectionGroups.Count; i++) 
     { 
      Console.WriteLine(config.SectionGroups[i].SectionGroupName); 
     } 
    }