2010-06-27 11 views
1

Dans Visual Studio 10 (probablement aussi d'autres versions), il est possible de définir des paramètres d'application à l'aide d'une vue de concepteur. Ces paramètres semblent simplement être des variables publiques stockées.Est-il possible d'utiliser des énumérations personnalisées dans les paramètres de l'application? (VS10)

Est-il possible d'utiliser une énumération personnalisée comme type de paramètre d'application?

Je remarque que vous pouvez parcourir les références pour enums, mais n'arrive pas à trouver un moyen de spécifier une énumération contenue dans mon code.

Répondre

6

La version courte est:

Vous pouvez créer votre propre ConfigurationSection et ConfigurationSectionGroup (de System.Configuration de référence, en premier lieu). Ensuite, vous définissez un dans votre web.config pour soutenir vos sections personnalisées. Si vous voulez intellisense, vous devez modifier C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Xml \ Schemas \ DotNetConfig.xsd pour inclure le détail de vos nouvelles sections.

Par exemple, disons que vous voulez config qui ressemble à ceci:

<tomWright.Framework> 
    <settings awesomeness="High" coolness="Medium"/> 
</tomWright.Framework> 

Vous souhaitez créer un ConfigurationSectionGroup appelé quelque chose comme TomWrightFrameworkConfigurationSectionGroup (qui hérite de ConfigurationSectionGroup) et ont-il une propriété appelée Paramètres, qui pointe vers une autre classe SettingsConfigurationSection (qui hérite de ConfigurationSection). Il existe quelques exemples sur MSDN sur la façon de procéder. C'est un peu une courbe d'apprentissage, mais quand vous voulez passer du simple appSettings à la configuration personnalisée - il n'y a vraiment qu'une seule façon de le faire, et ce n'est pas particulièrement intuitif. Si vous avez des questions cependant, faites-moi savoir, j'ai déjà fait une foire avec ça. Hope that helps ... -Rob

0

IIRC vous pouvez stocker des types de données personnalisés dans les paramètres d'application, mais le type doit être sérialisable XML ou avoir un convertisseur de type qui implémente les méthodes tostring/fromstring. Pour les types enum, je pense que vous avez juste besoin de le marquer avec SerializableAttribute. Pas sur mon ordinateur de travail en ce moment pour vérifier ma mémoire.