Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
桌面应用程序C#全局变量_C#_Compact Framework_Web Config_Global Variables - Fatal编程技术网

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

桌面应用程序C#全局变量,c#,compact-framework,web-config,global-variables,C#,Compact Framework,Web Config,Global Variables,桌面应用程序 C# 紧凑框架 一个解决方案中的2个项目 主项目使用DataAccess项目(参考),因为与数据库相关的所有内容都在DataAccess项目中 我实际上正在连接两个不同的数据库 如何创建一个可从两个项目中使用的“全局”变量?(无需添加引用-我不能这样做,因为它是循环引用) 在web中,我有(数据访问部分): 从web.config获取数据(这是在web prj中): 这看起来很有用,但我们有一个设置页面,您可以在其中更改实际的连接字符串。我不确定是否要使用这种方法。在我决定使用这

桌面应用程序

C#

紧凑框架

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

主项目使用DataAccess项目(参考),因为与数据库相关的所有内容都在DataAccess项目中 我实际上正在连接两个不同的数据库

如何创建一个可从两个项目中使用的“全局”变量?(无需添加引用-我不能这样做,因为它是循环引用)

在web中,我有(数据访问部分):

从web.config获取数据(这是在web prj中):



这看起来很有用,但我们有一个设置页面,您可以在其中更改实际的连接字符串。我不确定是否要使用这种方法。在我决定使用这样一个全局变量之前,我总是会仔细考虑很久,也许有更好的设计/架构可以让你解决这个问题? 无论如何,您并没有说明要针对哪个.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显然有对类库的引用。

创建第三个库,为类似这样的项目使用通用代码,并添加对它的引用

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

我确实陈述了版本。它的CF(也添加了标签)没有在CF上尝试此操作。不同的平台支持不同的版本。您需要查找您的平台支持的版本。参考:很好,您正在优化我的代码abatishchev!=)有时候我的例子在性能方面是快速的,而不是好的。这就是我在前面的回答中提到的另一种方法的意思。如果不需要,最好不要在应用程序设置中设置内容。当然,如果它是对数据库的引用,并且是从一些设置文件或其他文件中读取的,我不会反对AppSetting,但对于共享数据,这种方法更好。
public class Class1
{
    public static string GetTestData()
    {
        return ConfigurationSettings.AppSettings["TestData"];
    }
}
public static class GlobalVariables
{
    public static string SomeCommonVar { get { // read this lib app.config } }
}