Création d’une section de configuration personnalisée en .NET

Nous allons voir dans cet article, la façon dont fonctionne la création d'une section de configuration personnalisée en .NET que l'on va pouvoir lire dans un fichier .config de notre projet.

Dans un tout premier temps, nous allons créer une simple application Console avec C#. Ensuite nous allons devoir importer le namespace suivant dans notre fichier .cs qui contiendra notre code :

using System.Configuration;

Ce namespace va contenir toute la mécanique relative à la configuration générale d'une application .NET.
Après ce tout premier reflex, nous allons avoir besoin de créer une class publique qui va héritée d'une autre : la class ConfigurationSection. A partir de là, nous allons pouvoir définir dans cette class, le contenu de notre section et ses attribus. Voici un exemple concret très simple contenant un attribut compositeur : 

public class TestConfiguration : ConfigurationSection
{
    [ConfigurationProperty("compositor", DefaultValue = "Hans Zimmer", IsRequired = true)]
    public string Compositor
    {
        get
        { return (string)this["compositor"]; }
        set
        { this["compositor"] = value; }
    }
}

Nous allons maintenant nous attaquer au fichier de configuration. Vous devrez insérer ce morceau de code entre les balises <configuration> qui va nous permettre de faire un "pont" entre notre code et nos balises de configurations personnelles :

<configSections>
   <section 
      name="film"
      type="SectionConfigurationTutorial.TestConfiguration, SectionConfigurationTutorial"
   /> 
        <!-- pour le name : Nom de votre balise -->
        <!-- pour le type : Namespace + Class qui hérite de ConfigurationSection et le nom de l'assembly -->
</configSections>

Et ensuite la configuration en elle-même ici qui est des plus simples :

<film compositor="Ludovico Einaudi" />

Il nous suffit alors de récupérer la valeur de cette configuration avec ce petit bout de code :

var section = (TestConfiguration)ConfigurationManager.GetSection("film");
Console.WriteLine(section.Compositor);

Avec GetSection(), ayant pour argument le nom de la section défini dans configSections, nous récupérons cette dernière qui nous retourne un objet que l'on cast avec notre Class qui hérite de ConfigurationSection, en l'occurence : TestConfiguration