2010-08-18 124 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名稱空間中提供的類型訪問您的設置。

相關問題