桌面应用程序C#全局变量

时间:2010-11-02 14:42:58

标签: c# compact-framework web-config global-variables

桌面应用

C#

紧凑框架

一个解决方案中的2个项目

主项目使用DataAccess项目(引用),因为与Database相关的所有内容都在DataAcess项目中 我实际上是连接到两个不同的数据库。

如何制作两个项目都可以使用的“全局”变量? (无需添加引用 - 我不能这样做,因为它将是循环引用)

在网上我有(数据访问部分):

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

从web.config获取数据(这是在web 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 这看起来很有帮助,但我们有一个设置页面,您可以在其中更改实际的连接字符串

2 个答案:

答案 0 :(得分: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显然引用了类库。

答案 1 :(得分:1)

创建第3个库,为这两个项目提供公共代码,并添加对它的引用。

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