2009-04-03 7 views
2

Nous avons une base de données XML de configuration. Plutôt que d'y accéder directement via l'API de la base de données, j'aimerais étendre les classes de configuration de .Net pour ajouter un fournisseur de stockage personnalisé.Comment étendre les fournisseurs de configuration intégrés dans .Net pour ajouter du stockage personnalisé?

Je ne sais pas par où commencer. J'ai vu le bloc d'application de configuration, mais cela semble avoir été déprécié. J'utilise .Net 3.5.

Quelles classes dois-je regarder? Quelles interfaces dois-je mettre en œuvre? Est-ce que cela a été fait ailleurs?

Merci

Répondre

5

Vous pouvez charger des fichiers arbitraires dans le système de configuration, mais vous devrez utiliser ConfigurationManager.OpenMappedExeConfiguration passer un ExeConfigurationFileMap que vous COMPREND fichier.

Mais le fichier doit être au format .config, en utilisant <configuration> comme élément racine, et <configSections> pour définir des sections personnalisées. Une fois que cela est en place sous-classement ConfigurationElement et al. permet un degré élevé de flexibilité structurelle ou simplement d'analyser l'élément vous-même (remplacez ConfigurationElement.DeserializeElement).

Alternativement, utilisez une certaine abstraction. Avoir un élément personnalisé dans la configuration normale, avec un gestionnaire de section de configuration qui charge un fichier spécifié dans le fichier principal .config.

+0

Merci. J'ai également rencontré aujourd'hui SettingsProvider qui semble être un moyen très simple d'ajouter un fournisseur de paramètres personnalisés à une application ... une idée? – ng5000

+0

Paramètres n'est pas un domaine que j'utilise vraiment, la plupart du temps est juste un emballage de génération de code autour de .config pour rendre l'accès aux valeurs par nom un peu plus facile. Mais bloque certaines des options de System.Configuration (par exemple obtenir une instance de configuration à partir d'un fichier arbitraire, rendant la configuration par utilisateur modifiable). – Richard

Questions connexes