2009-11-20 6 views
14

Je suis un novice C# exécutant .NET 3.5, et je voudrais stocker un tas de valeurs par défaut dans App.config, les paramètres peuvent varier selon l'environnement du serveur (par exemple développement, mise en scène, production). Ce que je veux faire est similaire à ce qui est décrit dans this StackOverflow article, mais je veux aussi pouvoir utiliser des valeurs non-chaîne (par exemple, int, bool). Quelque chose comme ça (nom valeurs ne sont que des exemples, BTW):Utilisation de App.config pour définir des variables fortement typées

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <applicationSettings> 
     <MyApp> 
      <setting name="InitText" serializeAs="String"> 
       <value>Hello</value> 
      </setting> 
      <setting name="StartAt" serializeAs="Integer"> 
       <value>5</value> 
      </setting> 
      <setting name="IsWeekend" serializeAs="Boolean"> 
       <value>True</value> 
      </setting> 
     </MyApp> 
    </applicationSettings> 
</configuration> 

Quelqu'un pourrait-il donner un exemple de la façon de procéder, et comment récupérer les valeurs via C#? J'ai vu beaucoup d'exemples qui nécessitent d'utiliser et, mais je ne suis pas sûr si j'ai besoin de ces éléments, et si oui, comment les créer.

Répondre

28

Qu'en est-il de l'utilisation du Application Settings architecture du .NET Framework. Vous pouvez avoir un accès fortement typé aux valeurs par défaut.

Dans un projet d'application Windows, le fichier de paramètres est créé automatiquement dans le dossier Ressources. Vous pouvez ensuite ajouter les paramètres d'application qui sont conservés dans le fichier App.config, comme vous l'avez montré dans votre question.

Par exemple:

int i = Settings.Default.IntSetting; 

bool b = Settings.Default.BoolSetting; 

Edit: Si votre projet ne contient pas fichier les paramètres que vous pouvez toujours ajouter un en ajoutant un nouvel élément, puis en choisissant un fichier de paramètres. (Cliquez avec le bouton droit sur le fichier de projet et faites: Ajouter-> Nouvel élément-> Fichier de paramètres). Dans mon cas, je l'ai nommé Paramètres mais vous pouvez le nommer comme vous voulez. Après l'ajout du fichier Visual Studio va ouvrir le concepteur de paramètres dans lequel vous pouvez ajouter vos paramètres fortement typés. De ce que vous avez dit, vous devez définir les paramètres dans la portée de l'application et non sur l'utilisateur. Puis construisez le projet et vous devriez avoir accès à une classe avec le nom du fichier.

+0

Je pense que c'est ce dont j'ai besoin, mais je suis incapable d'accéder aux variables via C#. Lorsque je tape "Paramètres". Intellisense ne voit rien ... –

+1

Ce n'est pas vraiment cuit dans le cadre, c'est plutôt une chose IDE. Lorsque vous ajoutez un fichier '.settings' à votre projet C#/VB, il est utilisé pour générer du code pour la classe' Settings' qui enveloppe les paramètres de configuration en tant que propriétés du type approprié, et effectue tous les castings nécessaires, etc. –

+0

clarification - je l'apprécie. –

11
Boolean isWeekend = Convert.ToBoolean(ConfigurationManager.AppSettings["IsWeekend"]) 
+6

Ou Boolean.TryParse (...). http://msdn.microsoft.com/fr-fr/library/system.boolean.tryparse.aspx –

+8

cela n'échoue-t-il pas la partie "variables fortement typées" des exigences, vous stockez toujours une chaîne dans l'application .config –

+0

Oui, je ne veux pas avoir à refondre une chaîne comme le type approprié. –

-1

On dirait que vous voulez avoir un <configSection> personnalisé. Fondamentalement, cela fonctionne comme ceci:

-Créez une classe de configuration qui a des valeurs par défaut, etc, et configurez une structure d'héritage sympa pour qu'elle se charge automatiquement en fonction de vos paramètres web.config. -Ajouter votre section de configuration du web.config, en spécifiant le « type » qui charge vos paramètres de sorte que le framework .NET saura quoi initialiser

Vous pouvez trouver toutes sortes d'informations sur le MSDN library à ce sujet. Les exemples sont asp.net, mais ils fonctionnent aussi très bien avec les configs d'applications.

+0

Vous n'avez pas besoin d'écrire une configSection personnalisée pour cela. – BrainSlugs83

Questions connexes