2010-11-02 83 views
1

桌面應用桌面應用程序C#全局變量

C#

Compact Framework的

2在一個解決方案項目

主要項目使用數據訪問項目(參考),因爲涉及到數據庫的一切都在DataAcess項目 我實際上連接到2個不同的數據庫。

如何製作一個可從兩個項目中獲得的「全局」變量? (無需添加參考 - 這,我不能這樣做,因爲這將是圓形REF)

在網上我有(數據訪問部分):

string strConnRSS = System.Configuration.ConfigurationManager.AppSettings["something1"]; 
string strConnRSS = System.Configuration.ConfigurationManager.AppSettings["something2"]; 

從web.config中獲取數據(這是在網絡prj):

<appSettings> 
<add key="something1" value="server=...;database=...;uid=...;password=...;" /> 
<add key="something2" value="server=...;database=...;uid=...;password=...;" /> 
</appSettings> 

是否有類似的桌面應用程序?

感謝

更新: http://www.eggheadcafe.com/articles/dotnetcompactframework_app_config.asp 這看起來有幫助的,但是我們有一個設置頁面,在這裏你可以改變實際的連接字符串

回答

1

創建第三個庫,爲您的這兩個項目添加通用代碼並添加對其的引用。

public static class GlobalVariables 
{ 
    public static string SomeCommonVar { get { // read this lib app.config } } 
} 
+1

這是我的意思是在我以前的答案有另一種方法。如果不需要,最好不要在應用程序設置中包含任何東西。當然,如果它是對數據庫的引用,並且從某些設置文件讀取,或者我不會反對AppSetting,但對於共享數據,此方法更好。 – Mikael 2010-11-02 15:29:24

+0

@Swoosh:很高興它helepd! :) – abatishchev 2010-11-26 10:13:35

1

不知道我想用這種方式。在我決定擁有這樣一個全局變量之前,我會一直認真思考,也許有更好的設計/架構可以讓你解決這個問題? 無論如何,你沒有說明你打算使用哪個.Net版本,但這裏是3.5的代碼示例。

在我的exe:

private void button1_Click(object sender, EventArgs e) 
{ 
    ConfigurationManager.AppSettings.Set("TestData", "TestValue"); 

    string testData = ClassLibrary1.Class1.GetTestData(); 
    if (testData != null) 
     MessageBox.Show(testData); 
    else 
     MessageBox.Show("Not found"); 
} 

在我的類庫:

public class Class1 
{ 
    public static string GetTestData() 
    { 
     return ConfigurationSettings.AppSettings["TestData"]; 
    } 
} 

exe文件顯然有對類庫的引用。

+0

我確實說明了版本。它的CF(也添加了標籤) – Ash 2010-11-02 15:19:41

+0

沒有嘗試過CF.不同的平臺支持不同版本。您需要查看您的平臺支持哪個版本。 – Mikael 2010-11-02 15:20:17

+0

參考:http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings(v=VS.90).aspx – Mikael 2010-11-02 15:22:05