2009-06-11 5 views
3

Je crée une petite application console qui crée un index Lucene à partir d'une base de données Sql. Cette application sera exécutée avec un seul paramètre. Ce paramètre définit la chaîne de connexion à utiliser et l'emplacement du fichier de destination.Puis-je regrouper des clés appseting?

Je souhaite stocker les chaînes de connexion et les chemins cibles dans le fichier app.config. Est-il possible de regrouper les paramètres? Par exemple je voudrais que si le paramètre "ABC" est donné, connectionstring1 est utilisé et targetPathBanana est utilisé.

Cet exemple suivant ne fonctionne pas, mais je pense illustre mon intention

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <abc> 
     <appSettings>    
      <add key="targetBasePath" value="\\Thor\lucene\abc"/> 
     </appSettings> 
     <connectionStrings>    
      <add name="commonString" 
       connectionString="Data Source=thor;Persist Security Info=True;User ID=****;Password=****"/> 
     </connectionStrings> 
    </abc>  
    <123> 
     <appSettings>    
      <add key="targetBasePath" value="\\Loki\temp\lucene"/> 
     </appSettings> 
     <connectionStrings>    
      <add name="commonString" 
       connectionString="Data Source=helga;Persist Security Info=True;User ID=****;Password=****"/> 
     </connectionStrings> 
    </123> 
</configuration> 

Je sais que je pouvais faire les noms des clés suivent une convention de nommage, mais je suis curieux de savoir si cela pourrait être résolu d'une manière moins conventionnelle.

Répondre

4

Si vous utilisez ce préfixe dans votre fichier app.config, vous devriez être en mesure de créer autant de groupes de section personnalisée qui contiennent des sections <appSettings> et <connectionStrings> que vous le souhaitez:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <sectionGroup name="ABC"> 
     <section name="appSettings" 
       type="System.Configuration.AppSettingsSection, 
        System.Configuration"/> 
     <section name="connectionStrings" 
       type="System.Configuration.ConnectionStringsSection, 
        System.Configuration"/> 
    </sectionGroup> 
    </configSections> 
    ... put your section groups here..... 
    <ABC> 
    <appSettings>       
     <add key="targetBasePath" value="\\Thor\lucene\abc"/> 
    </appSettings> 
    <connectionStrings>      
     <add name="commonString" connectionString="..."/> 
    </connectionStrings> 
    </ABC> 
</configuration> 
+0

Merci:) –

+0

Tout exemple sur comment/comment accéder aux appsettings groupés avec 'ConfigurationManager.AppSettings [@" ??? "]'? –

+0

Veuillez ajouter un exemple sur la façon d'accéder au groupe. –

Questions connexes