Verwenden Sie eine öffentliche statische Klasse und greifen Sie von überall darauf zu.
public static class MyGlobals {
public const string Prefix = "ID_"; // cannot change
public static int Total = 5; // can change because not const
}
wie so verwendet wird, von der Master-Seite oder überall:
string strStuff = MyGlobals.Prefix + "something";
textBox1.Text = "total of " + MyGlobals.Total.ToString();
Sie müssen keine Instanz der Klasse zu machen; in der Tat können Sie nicht, weil es statisch ist.
new
Verwenden Sie es einfach direkt. Alle Mitglieder innerhalb einer statischen Klasse müssen ebenfalls statisch sein. Die Zeichenfolge Präfix ist nicht als statisch markiert, da const
von Natur aus implizit statisch ist.
Die statische Klasse kann in Ihrem Projekt beliebig sein. Es muss nicht Teil von Global.asax oder einer bestimmten Seite sein, weil es "global" ist (oder mindestens so nah wie möglich an dieses Konzept in objektorientierten Begriffen.)
Sie können so viele machen statische Klassen, wie Sie möchten und nennen Sie sie, was Sie wollen.
Manchmal möchten Programmierer ihre Konstanten gruppieren, indem sie verschachtelte statische Klassen verwenden. Zum Beispiel
public static class Globals {
public static class DbProcedures {
public const string Sp_Get_Addresses = "dbo.[Get_Addresses]";
public const string Sp_Get_Names = "dbo.[Get_First_Names]";
}
public static class Commands {
public const string Go = "go";
public const string SubmitPage = "submit_now";
}
}
und greifen Sie wie folgt:
MyDbCommand proc = new MyDbCommand(Globals.DbProcedures.Sp_Get_Addresses);
proc.Execute();
//or
string strCommand = Globals.Commands.Go;
Gibt es einen bestimmten Grund cache/Sitzung nicht funktionieren?Technisch gesehen ist die Anwendung ein Session/Cache-Objekt, und wenn Sie dies (auf nicht statische Weise) verwenden, verwenden Sie bereits Sessions. Wenn es sich um den sitzungsspezifischen Teil handelt, kann dieser mit dem Cache auf App-Ebene angesprochen werden. – GrayWizardx
ja, weil ich eine große Liste speichern muss, und der Cache ist nur 16 MB, also will ich nicht cahe Ressourcen verschwenden ... – scatman
Wollen Sie ein Singleton? Ein einzelnes Objekt, das von * allen * Threads verwendet wird, die * alle * Anfragen bearbeiten? Oder möchten Sie nur eine Möglichkeit, Daten zwischen einer MasterPage und einer ContentPage freizugeben? Wenn es später ist, dann sind globale Variablen sicherlich keine gute Lösung. – tarn