2010-06-11 12 views
1

J'ai une section de configuration personnalisée pour une bibliothèque, et je voudrais charger mon objet de configuration de la bibliothèque elle-même.
Suis-je obligé de fixer le groupe et le nom de la section de configuration, par ex.Obtenir le nom de la section de configuration enregistrée pour un certain type dans .net

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <sectionGroup name="MyGroup"> 
     <section name="MySection" type="MyAssembly.MySection, MyAssembly"/> 
    </sectionGroup> 
    </configSections> 
    <MyGroup> 
    <MySection something="xxx" /> 
    </MyGroup> 
</configuration> 

MySection cfg = (MySection)ConfigurationManager.GetSection("MyGroup/MySection"); 

ou existe-t-il un moyen d'obtenir le chemin de la section enregistrée pour un type donné, de sorte que par ex. si l'utilisateur a mis la section de configuration sous un groupe avec un nom différent je peux toujours l'obtenir?
Quelque chose comme

<sectionGroup name="AnotherGroupName"> 
    <section name="MySection" type="MyAssembly.MySection, MyAssembly"/> 
</sectionGroup> 

string sectionPath = SomeClass.GetSectionPath(typeof(MySection)); 
MySection cfg = (MySection)ConfigurationManager.GetSection(sectionPath); 

Répondre

2

Il y a une très bonne façon d'empêcher l'utilisateur de renommer un groupe. Coder en dur le nom du groupe dans votre code afin qu'il ne fonctionne plus quand elle joue avec le nom. Accueillir de tels changements arbitraires n'a pas de sens et cause plus de problèmes qu'elle n'en résout. Si vous êtes préoccupé par les collisions de noms, vous pouvez certainement ajouter une propriété publique qui permet au code client de remplacer le nom du groupe.

+0

J'avais plus ou moins atteint la conclusion que permettre cela allait introduire plus de problèmes que cela a résolu ... Je suis heureux d'avoir une confirmation :) –