2010-08-18 91 views
3

很长一段时间我用:从app.config获取数据的最佳方式是什么?

ConfigurationManager.ConnectionStrings["sqlconnectionstring"].ConnectionString 

从app.config文件

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

最近我发现我canget使用

global::myProj.Properties.Settings.Default.sqlconnectionstring; 
    字符串获取连接字符串
  1. 有什么区别?
  2. 我可以通过appSetting访问密钥吗?
  3. 我怎么不需要导入System.Configuration?

感谢阿萨夫

回答

3

global::myProj.Properties.Settings.Default.sqlconnectionstring;东西是由Visual Studio中的设置设计器生成。

这些设置可以在Properties-> Settings.settings下的解决方案资源管理器中找到,类型安全包装器方法会自动为设置设计器中定义的所有属性生成。

这仅适用于在设置设计器中定义的设置(连接字符串会自动添加到设置设计器中)。

编辑,回答您的具体问题

  1. 第二个是第一个的生成的包装。
  2. 不,但是如果您在设置设计器中创建了自己的设置,则它们将存储在另一个名为“applicationSettings”的部分。
  3. 导入(或完全限定名称在生成的包装类中完成)。
+0

您可以按'sqlconnectionstring'上的[F12]查看包装是如何实现的。 – 2010-08-18 20:49:00

0

使用global::只在需要区分特定方法或变量的名称空间时才真正需要。可以发现更多信息here

对于C#来说,使用Properties.Settings.Default访问配置文件中的属性要容易得多。

1

我认为您提到的类型global::myProj.Properties.Settings.Default是由Visual Studio为您生成的,如果您正在为您的项目使用设置。它使用低级别的基础结构来访问app.config。

请注意,名称空间System.Configuration即使在不引用System.configuration.dll时也可用。这是因为几种类型的System.Configuration名称空间驻留在默认引用的其他几个程序集(例如System.dll)中。

ConfigurationManager驻留在System.configuration.dll中。因此,如果你想使用它,你需要引用该程序集。

如果您需要访问app.config文件中的appSetting部分,我认为您需要坚持ConfigurationManager。如果您正在创建一个新应用程序,我建议您使用Visual Studio对设置的支持并通过global::myProj.Properties名称空间中提供的类型访问您的设置。

相关问题