2014-09-07 6 views
3

Je suis nouveau à C# et je suis toujours en train de déterminer les meilleures pratiques pour certaines choses. Je veux savoir où je pourrais stocker les paramètres tels que les chemins (par exemple pour les téléchargements de fichiers) et d'autres variables assorties afin qu'ils puissent être accessibles n'importe où dans le projet.Où stocker des variables globales (comme des chemins) en C#?

Dois-je simplement créer une classe avec des variables statiques ou existe-t-il une meilleure approche pour stocker ces paramètres?

+0

Dans votre Web.Config (ou App.Config)? Vous pouvez avoir différents paramètres de construction et différents fichiers de configuration pour ceux-ci. Cela dépend aussi vraiment de ce que vous stockez. –

+0

Pour l'instant je ne suis intéressé qu'à avoir un seul endroit où je peux garder tous les chemins que je référence dans mes contrôleurs. Je vais regarder dans les fichiers de configuration que vous avez mentionnés. –

+0

Si ce sont les paramètres et les chemins d'accès à l'application, alors définitivement le web.config - voir aussi http://stackoverflow.com/questions/19284994/how-to-have-different-web-config-settings-for-my-local- machine Vous pouvez bien sûr lancer le vôtre - mais Web.Config a l'avantage de redémarrer votre serveur lorsque vous le changez et de télécharger une nouvelle version (enfin ... mais je ne veux pas entrer dans les détails sans intérêt) –

Répondre

7

Vous feriez mieux de sauvegarder ceci dans le web.config puisque cela peut être changé après la compilation. L'élément appSettings est réservé à ce type de fonctionnalité. Vous pouvez même découper cette partie dans un fichier différent, ce qui est totalement clair dans votre configuration spécifique.

Exemple web.config seulement:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="DocumentDirectory" value="~/Documents" /> 
    </appSettings> 
</configuration> 

Ou:

web.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings file="appSettings.xml" /> 
</configuration> 

Et un appSettings.xml séparé:

<?xml version="1.0" encoding="utf-8" ?> 
<appSettings> 
    <add key="DocumentDirectory" value="~/Documents" /> 
</appSettings> 

Vous pouvez read those settings comme ceci:

using System.Configuration; 
using System.Web.Configuration; 

Configuration config = WebConfigurationManager.OpenWebConfiguration(null); 

if (config.AppSettings.Settings.Count > 0) 
{ 
    KeyValueConfigurationElement customSetting = config.AppSettings.Settings["DocumentDirectory"]; 

    if (customSetting != null) 
    { 
     string directory = customSetting.Value; 
    } 
} 
+0

Comment J'accède à ces valeurs de mes contrôleurs cependant? –

+0

Merci pour les commentaires :) –

+0

Très bien @ Patrick-hofman, mais dans de multiples environnements comment cette solution peut-elle être applicable? – InferOn

Questions connexes