Section de configuration sur mesure avec .NET
On retrouve beaucoup d’articles sur Internet qui expliquent comment bâtir un Handler pour lire une section de configuration sur mesure. Bien qu’il ne soit pas particulièrement complexe de créer ses propres classes de configuration, il existe une alternative peu connue mais fort pratique. Cette approche est d’une rapidité déconcertante à mettre en oeuvre, pour autant que l’on se souvient de la façon faire… J’ai donc pensé noter le tout ici afin de ne plus l’oublier.
Pour commencer, il suffit d’ajouter une section dans le fichier de configuration en utilisant l’élément configSection et d’y associer le type NameValueSectionHandler. Cette classe est en mesure de traiter une section contenant un dictionaire de valeurs (comme la section AppSettings, par exemple). Ensuite, on insère la section en utilisant un élément add pour chaque valeur qu’on souhaite stocker.
Voici un exemple d’une telle section:
<configuration>
<configSections>
<section name=”customSection” type=”System.Configuration.NameValueSectionHandler, System, version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089“/>
</configSections>
<customSection>
<add key=”firstKey” value=”firstValue”/>
</customSection>
</configuration>
Le code pour relire les valeurs définies dans la section est aussi simple que:
<TestMethod()> _
Public Sub ReadValueFromCustomSection()
Dim sectionValues As NameValueCollection = DirectCast(ConfigurationManager.GetSection(“customSection”), NameValueCollection)
Assert.IsNotNull(sectionValues)
Assert.AreEqual(“firstValue”, sectionValues(“firstKey”))
End Sub
En utilisant cette approche on minimise le code à écrire tout en conservant le bénéfice d’une section typée. Il est même possible de créer des groupes dans le fichier de configuration, tel que présenté dans cet exemple.
Je trouve que cette approche est un excellent compromis, particulièrement pour les projets en entreprise où la configuration est généralement bien connue et documentée. Pour ceux qui développent un Framework commercial, une section entièrement typées demeure probablement la meilleure approche.

