Настольное приложение C # Глобальная переменная - PullRequest
1 голос
/ 02 ноября 2010

Настольное приложение

C #

Compact Framework

2 проекта в одном решении

Основной проект использует проект DataAccess (ссылка), поскольку все, что связано сБаза данных находится в проекте DataAcess. На самом деле я подключаюсь к двум различным базам данных.

Как создать глобальную переменную, которая будет доступна в обоих проектах?(без необходимости добавлять ссылку - что я не могу сделать, потому что это будет круговая ссылка)

В сети я имел (часть доступа к данным):

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

получение данных из сети.config (это было в веб-проекте):

 <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 ]

1 голос
/ 02 ноября 2010

Создайте третью библиотеку с общим кодом для обоих ваших проектов, подобным этому, и добавьте ссылки на нее.

public static class GlobalVariables
{
    public static string SomeCommonVar { get { // read this lib app.config } }
}
1 голос
/ 02 ноября 2010

Не уверен, что хотел бы использовать этот подход. Я всегда буду долго и усердно думать, прежде чем решу иметь такую ​​глобальную переменную, может быть, есть какая-то лучшая конструкция / архитектура, которая позволит вам обойти это? В любом случае, вы не указали, на какую версию .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-файла есть ссылка на библиотеку классов.

...