IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

ExeConfigurationFileMap les sections de fichier de configuration


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Points : 67
    Points
    67
    Par défaut ExeConfigurationFileMap les sections de fichier de configuration
    Bonjour,

    j'ai utilisé la classe ExeConfigurationFileMap pour parcourir un fichier de configuration externe

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    ExeConfigurationFileMap f = new ExeConfigurationFileMap();
     
    f.ExeConfigFilename ="chemin de fichier de configuration ";
     
    Configuration Config = ConfigurationManager.OpenMappedExeConfiguration(f,ConfigurationUserLevel.None);
     
    //récupérer la valeur de clé key de section appSettings
     
    string val =Config.AppSettings.Settings["key"].Value;
     
    //parcours tous les sections de fichier de configuration externe 
    ConfigurationSectionGroupCollection sectionGroups = Config.SectionGroups;
     
    ConfigurationSectionCollection sectionCollection = sectionGroups["Groupe"].Sections;
     
    foreach (string WorkUnit in sectionCollection.Keys)
    {
     Console.WriteLine(WorkUnit);
    }
    le problème ce que j'ai c j'ai pas pu trouver une méthode qui permet de récupérer les valeurs de clé de chaque section

    il y ' a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NameValueCollection nvc = (NameValueCollection)ConfigurationManager.GetSection("nomsection");
    mais cette instruction permet de récupérer les valeurs de clé de fichier de configuration actuelle

    mais je veux de récupérer les valeurs de clé de section personnalisé de fichier de configuration externe.

    si vous savez comment n'hésitez pas de m'aider merci bcp

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Points : 196
    Points
    196
    Par défaut
    Salut,

    Je ne connais pas l'utilisation de la classe ExeConfigurationFileMap, cependant je pense pourvoir t'aider pour parser tes ConfigSection dans ton fichier de config.

    Tu dois déclarer dans ton fichier de config tes différentes section personnaliser et pour chacune, créer une classe implémentant l'interface IConfigurationSectionHandler.

    Tout d'abord pour le fichier *.config, tu dois déclarer tes sections de cette manières:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <configuration>
    	<configSections>
    		<section name="MaSection" type="Namespace+NomDeMaClasse, NomDeMonAssembly" />
    	</configSections>
    	<MaSection>
    		<MaConfPerso ... />
    	</MaSection>
    	[...]
    </configuration>
    Ensuite dans ta classe où tu implémentes IConfigurationSectionHandler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public object Create(object parent, object configContext, System.Xml.XmlNode section)
    {
            //Ton code, où faut parser ta section XML contenu dans section
    }
    J'espère que ça pourra t'aider !

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Points : 67
    Points
    67
    Par défaut
    tu peux détailler svp et comment je peux récuperer les clés de section

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Points : 196
    Points
    196
    Par défaut
    En fait il faut à la base que tu saches manipuler le XML, ce qui n'a rien de méchant surtout en .net, un petit tour sur msdn t'apprendra le nécessaire.

    Je ne sais pas trop comment détailler donc je vais te donner un exemple plus concret, ça devrai faciliter la compréhension je pense.

    J'ai un générateur de code, qui fonctionne sur un principe de workers. Je défini chacun de mes workers dans un fichier de config tel quel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <configuration>
    	<configSections>
    		<section name="SqlGenerator" type="SqlGenerator.Configuration.SqlGeneratorConfigurationHandler, SqlGenerator" />
    	</configSections>
    	<SqlGenerator>
    		<GeneratorWorkers>
    			<FileWorkers destinationPath="E:\Projects\src">
    				<Workers name="EntityBase" filename="{0}Base.cs" folder="DataAccesLayer\EntitiesBase" template="EntityBase"  />
    				<Workers name="Entity" filename="{0}.cs" folder="DataAccesLayer\Entities" template="Entity" noreplace="true" />
    				<Workers name="ProviderBase" filename="{0}ProviderBase.cs" folder="DataAccesLayer\ProvidersBase" template="ProviderBase" />
    				<Workers name="Provider" filename="{0}Provider.cs" folder="DataAccesLayer\Providers" template="Provider" noreplace="true" />
    				<Workers name="DataSource" filename="{0}DataSource.cs" folder="DataAccesLayer\DataSourceObjects" template="DataSource" />
    				<Workers name="Column" filename="{0}Column.cs" folder="DataAccesLayer\Columns" template="Column" />
    				<Workers name="DataRepositoryBase" filename="DataRepositoryBase.cs" folder="DataAccesLayer" template="Repository" />
    				<Workers name="SiteMap" filename="Admin.sitemap" folder="BackOffice\SiteMaps" template="SiteMap" />
    			</FileWorkers>
    			<SqlWorkers connectionString="...">
    				<Workers name="DeleteProcedure" procedurename="G_{0}_Delete" template="DeleteProcedure"  />
    				<Workers name="InsertProcedure" procedurename="G_{0}_Insert" template="InsertProcedure"  />
    				<Workers name="UpdateProcedure" procedurename="G_{0}_Update" template="UpdateProcedure"  />
    			</SqlWorkers>
    		</GeneratorWorkers>
    	</SqlGenerator>
    	<connectionStrings>
    		<add name="LoaderConnectionString" connectionString="..." />
    	</connectionStrings>
    </configuration>
    A coté de ça, dans mon appli, j'ai une classe SqlGeneratorConfigurationHandler qui est chargé de me charger tout ces paramètres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    public class SqlGeneratorConfigurationHandler : IConfigurationSectionHandler
    {
        #region IConfigurationSectionHandler Members
     
        public object Create(object parent, object configContext, System.Xml.XmlNode section)
        {
            GeneratorConfiguration config = new GeneratorConfiguration();
     
            XmlNodeList fileWorkers = section.SelectNodes("GeneratorWorkers/FileWorkers/Workers");
            string fileDestinationPah = section.SelectSingleNode("GeneratorWorkers/FileWorkers").Attributes["destinationPath"].Value;
            string sqlConnectionString = section.SelectSingleNode("GeneratorWorkers/SqlWorkers").Attributes["connectionString"].Value;
     
     
            foreach (XmlNode workerNode in fileWorkerNodes)
            {
                string name = workerNode.Attributes["name"].Value;
                string fileName = workerNode.Attributes["filename"].Value;
                string folder = workerNode.Attributes["folder"].Value;
                string template = workerNode.Attributes["template"].Value;
     
                FileGeneratorWorker worker = new FileGeneratorWorker(destinationPath, template, folder, fileName);
            }
     
            //...
     
            return config;
        }
     
        #endregion
    }
    Je viens aussi de penser a autre chose, si tu veux simplement récupérer 2-3 valeurs configurable le plus simple (et de loin) reste de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string valeur = ConfigurationManager.AppSettings["Clé"];
    avec un fichier *.config tel que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <configuration>
    	<appSettings>
    		<add key="Clé" value="Valeur"/>
    	</appSettings>
    </configuration>
    Et tu peux bien sur mettre autant de Clé/Valeur que tu en as envie!

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/08/2008, 20h12
  2. renvoyer toutes les section d'un fichier .ini
    Par user_steph dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/07/2005, 16h06
  3. fichier ini -> recuperer toute les sections
    Par abignon dans le forum MFC
    Réponses: 2
    Dernier message: 08/04/2004, 18h46
  4. Les fichiers de configuration de comptes avec Samba
    Par tomnie dans le forum Réseau
    Réponses: 4
    Dernier message: 18/03/2004, 08h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo