2010-08-18 5 views
3

Pendant longtemps je:Quelle est la meilleure façon d'obtenir des données à partir de app.config?

ConfigurationManager.ConnectionStrings["sqlconnectionstring"].ConnectionString 

pour obtenir la chaîne de connexion à partir du fichier app.config

<configuration> 
    <connectionStrings> 
     <add name="sqlconnectionstring" connectionString="Data Source=ggg;Initial Catalog =DB;User ID=sa;Password=sa" /> 
    </connectionStrings> 
</configuration> 

Dernièrement, je trouve que je canget la chaîne en utilisant

global::myProj.Properties.Settings.Default.sqlconnectionstring; 
  1. Quelle est la différence? Puis-je accéder à une clé sous appSetting?
  2. Pourquoi n'ai-je pas besoin d'importer System.Configuration?

Merci Asaf

Répondre

3

La substance global::myProj.Properties.Settings.Default.sqlconnectionstring; est généré par le concepteur de paramètres dans Visual Studio.

Les paramètres peuvent être trouvés dans l'explorateur de solutions sous Properties-> Settings.settings, les méthodes wrapper typesafe sont automatiquement générées pour toutes vos propriétés définies dans le concepteur de paramètres. Cela fonctionne uniquement pour les paramètres définis dans le concepteur de paramètres (les chaînes de connexion sont automatiquement ajoutées au concepteur de paramètres).

Modifier, pour répondre à vos questions spécifiques

  1. Le second est une enveloppe générée de la première.
  2. Non, mais si vous créez vos propres paramètres dans le concepteur de paramètres, ils sont stockés dans une autre section appelée "applicationSettings".
  3. L'import (ou plutôt utilisé par nom qualifié complet est fait dans la classe wrapper générée).
+0

Vous pouvez appuyer sur [F12] sur 'sqlconnectionstring' pour voir comment l'encapsuleur est implémenté. –

0

L'utilisation de global:: n'est vraiment requise que si vous avez besoin de distinguer les espaces de noms pour une méthode ou variable particulière. Plus d'informations peuvent être trouvées here

Pour C#, il est beaucoup plus facile d'utiliser Properties.Settings.Default pour accéder aux propriétés dans votre fichier de configuration.

1

Je pense que votre type mentionné global::myProj.Properties.Settings.Default est généré pour vous par Visual Studio, si vous utilisez un paramètre pour votre projet. Il utilise une infrastructure de bas niveau pour accéder à app.config.

Notez que l'espace de noms System.Configuration est disponible même lorsque vous ne référencez pas System.configuration.dll. C'est parce que plusieurs types de l'espace de noms System.Configuration résident dans plusieurs autres assemblys (par exemple System.dll), qui sont référencés par défaut.

ConfigurationManager réside dans System.configuration.dll. Ainsi, si vous voulez l'utiliser, vous devrez référencer cet assembly.

Si vous avez besoin d'accéder à la section appSetting du fichier app.config, je pense que vous devez vous en tenir au ConfigurationManager.Si vous démarrez une nouvelle application, je vous recommande d'utiliser la prise en charge de Visual Studio pour les paramètres et d'accéder à vos paramètres via les types fournis dans l'espace de noms global::myProj.Properties.

Questions connexes