Как сделать строку доступной во всех формах C#

Я использую Compact Framework 2.0 для приложения на устройстве Windows CE 5.0 с несколькими формами.

Мне приходится использовать строку подключения почти во всех формах для доступа к базе данных:

string conString = "Data Source=\\Program Files\\myproject\\database.sdf";

Я хотел бы знать, можно ли сделать эту строку подключения как-то «глобальной», чтобы ее можно было записать только один раз и получить доступ ко всем формам.


person rfc1484    schedule 02.08.2011    source источник
comment
Вы никогда не должны жестко кодировать строки подключения. Вместо этого добавьте его в файл конфигурации приложения.   -  person Steven    schedule 02.08.2011


Ответы (2)


Согласно комментарию @Steven, вам действительно следует добавить это в файл конфигурации, однако см. Ниже пример того, что вы просили.

Создайте для него класс и сделайте его общедоступным константным полем.

public static class Globals
{
    public const string conString = "Data Source=\\Program Files\\myproject\\database.sdf"; 
}

Затем в ваших формах (или где-либо еще) вы можете получить к нему доступ как Globals.conString.

person George Duckett    schedule 02.08.2011
comment
+1. Я бы, вероятно, также отметил класс как статический, если он не будет содержать ничего, кроме статических значений. - person DoctorMick; 02.08.2011
comment
Я ничего не имею против того, чтобы сделать это с помощью файла конфигурации приложения, если это лучший способ. Но я думаю, что compact-framework не поддерживает файлы app.config (поправьте меня, если я ошибаюсь). Поэтому я думаю, что должен использовать класс, подобный тому, который вы написали. Спасибо! - person rfc1484; 02.08.2011

Для большей гибкости вы можете использовать ключевое слово только для чтения. Члены только для чтения инициализируются во время выполнения и могут содержать сложные объекты.

public class DataBaseConfiguration
{
     public readonly String conStr;

     public DataBaseConfiguration(String conString)
     {
          this.conString = conString;
     }
}
person Lupanov Evgeny    schedule 02.08.2011