Использовать открытый статический класс и получить доступ к нему из любого места.
public static class MyGlobals {
public const string Prefix = "ID_"; // cannot change
public static int Total = 5; // can change because not const
}
используется как так, с главной страницы или в любом месте:
string strStuff = MyGlobals.Prefix + "something";
textBox1.Text = "total of " + MyGlobals.Total.ToString();
Вам не нужно, чтобы сделать экземпляр класса; на самом деле вы не можете, потому что это статично.
new
Просто используйте его напрямую. Все члены внутри статического класса также должны быть статическими. Строка Префикс не помечен как статический, поскольку const
неявно статичен по своей природе.
Статический класс может быть в любом месте вашего проекта. Он не должен быть частью Global.asax или любой конкретной страницы, потому что он «глобальный» (или, по крайней мере, как можно ближе к этому понятию в объектно-ориентированных терминах.)
Вы можете сделать так много статические классы, как вам нравится, и назовите их, что хотите.
Иногда программисты любят группировать свои константы с помощью вложенных статических классов. Например,
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";
}
}
и доступ к ним так:
MyDbCommand proc = new MyDbCommand(Globals.DbProcedures.Sp_Get_Addresses);
proc.Execute();
//or
string strCommand = Globals.Commands.Go;
Есть ли какой-либо кэш причина/сессия не будет работать?Технически приложение является объектом Session/Cache, поэтому, если вы используете это (нестатически), вы уже используете Session. Если это определенная часть сеанса, которую можно решить с кешем уровня приложения. – GrayWizardx
да, потому что мне нужно хранить большой список, а кеш - только 16 МБ, поэтому я не хочу тратить деньги на ресурсы ... – scatman
Вы хотите синглтон? Единственный объект, который разделяет * все * потоки, обрабатывающие * все * запросы? Или вам просто нужен способ обмена данными между MasterPage и ContentPage. Если это более поздние, то глобальные переменные, безусловно, не являются хорошим решением. – tarn