2016-05-04 33 views
0

私は以下のようにAppConfigファイルを持っています。 configsectionsをループしてセクション名を取得しようとしていますが、セクション名に基づいて適切なappSettingsを選択する必要があります。たとえば、最初のセクションがVehicleConfigの場合、VehicleConfigのappSettingsが自動的に選択されます。複数のセクションがあり、セクション名に基づいて異なるセクションのappSettingsを取得する必要があるため、この自動選択が必要です。AppConfigで複数のセクションにアクセスする

<configuration> 
    <configSections> 
     <sectionGroup name="group1"> 
     <section name="Vehiclefeature"type="System.Configuration.NameValueSectionHandler" /> 
     <section name="LiveDownloader" type="System.Configuration.NameValueSectionHandler" /> 
     </sectionGroup> 
    </configSections> 
    <VehicleFeature> 
     <add key="FileRoot" value="C:\FilesToUpload" /> 
     <add key="Project" value="BigDataTest" /> 
     <add key="Dataset" value="StoreServer" /> 
    </VehicleFeature> 
    <LiveDownloader> 
     <add key="FileRoot" value="C:\FilesToUpload" /> 
     <add key="Project" value="BigDataTest" /> 
     <add key="Dataset" value="BQSMeasure" /> 
    </LiveDownloader> 
    </configuration> 

私はこのコードを試みており、第二のために、各ループがヒットした場合は、エラー「VehicleConfig内の認識できない要素のappSettings」をスロー。私はappSettingsを削除しようとしましたが、 "Unrecognized element add"がスローされます。私はVehicleConfigの中にこれらの要素を持つことができるのだろうかと思います。

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

ConfigurationSectionGroupCollection sectionGroups = config.SectionGroups; 

     foreach (ConfigurationSectionGroup group in sectionGroups) 
     // Loop over all groups 
     { 
      Console.WriteLine(group); 
      if (group.Name == "FileCheckerConfigGroup") 
      { 
       foreach (ConfigurationSection configurationSection in group.Sections) 
       { 
        var section = ConfigurationManager.GetSection(configurationSection.SectionInformation.SectionName) as NameValueCollection; 
       } 
      } 
     } 

何か助けてください!

+0

これはあなたの質問に答えるかもしれません。http://stackoverflow.com/questions/20195198/how-to-use-configurationmanager-appsettings-with-a-custom-section – Fred

答えて

0
 System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

     // Get the collection of the section groups. 
     ConfigurationSectionGroupCollection sectionGroups = config.SectionGroups; 

     // Show the configuration values 
     foreach (ConfigurationSectionGroup group in sectionGroups) 
     // Loop over all groups 
     { 
      if (group.Name == "group1") 
      { 
       foreach (ConfigurationSection configurationSection in group.Sections) 
       { 
        var section1 = ConfigurationManager.GetSection(configurationSection.SectionInformation.SectionName) as NameValueCollection; 

       } 
      } 
     } 
関連する問題