>What's the best way to handle global variables that are established when the app startes - e.g. user id, company id, connection string, etc in a Windows form or WPF application as the app moves from form to form?
>I've been rolling properties forward from one form to the other and it seems that must be a better way?
>I read somewhere about copying a dictionary and that seemed to make sense.
>Any suggestions?
Where the settings are not known at compile time I favour a static class. Something like:
public static class AppSettings
{
public static readonly string ConnectionString;
static AppSettings()
{
ConnectionString = GetConnectionString();
}
static string GetConnectionString()
{
return "SQL...";
}
}
Using this then the first time AppSettings.ConnectionString is referenced anywhere in code the static constructor runs automtically and sets the ConnectionString value (note that although marked readonly the ConnectionString value can be set via the constructor).
If you may later want to change the ConnectionString value whilst the app is running then use it without the readonly modifier.....
HTH,
Viv