c#.net中的全局variables
我如何在C#web应用程序中设置全局variables?
我想要做的就是在页面上设置一个variables(master page也许),并从任何页面访问这个variables。
我想要使用caching和会话。
我认为我必须使用global.asax。 任何帮助?
使用公共静态类并从任何地方访问它。
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();
你不需要创build一个类的实例; 实际上你不能,因为它是静态的。 只要直接使用它。 静态类中的所有成员也必须是静态的。 string前缀没有标记为静态,因为new
const
本质上是隐式静态的。
静态类可以在你的项目中的任何地方。 它不必是Global.asax或任何特定页面的一部分,因为它是“全局的”(至less尽可能接近于面向对象的概念)。
您可以根据需要制作任意数量的静态类,并根据需要命名。
有时程序员喜欢使用嵌套的静态类对它们的常量进行分组。 例如,
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;
我第二个JDK的答案是:你的应用程序的任何类的任何公共静态成员可以被视为一个“全局variables”。
但是,请注意,这是一个ASP.NET应用程序,因此它是全局variables的multithreading上下文。 因此,在更新和/或从这些variables读取数据时,应该使用一些locking机制。 否则,您可能会使数据处于损坏状态。
您可以在应用程序中创build一个从System.Web.UI.Pageinheritance的基类。 让所有的页面从新创build的基类inheritance。 使用预期的访问修饰符将属性或variables添加到基类,以便从应用程序中的所有页面访问它。
您可以创build一个具有应用程序范围的variables
/// <summary> /// Contains global variables for project. /// </summary> public static class GlobalVar { /// <summary> /// Global variable that is constant. /// </summary> public const string GlobalString = "Important Text"; /// <summary> /// Static value protected by access routine. /// </summary> static int _globalValue; /// <summary> /// Access routine for global variable. /// </summary> public static int GlobalValue { get { return _globalValue; } set { _globalValue = value; } } /// <summary> /// Global static field. /// </summary> public static bool GlobalBoolean; }
只需在类的起始处声明variables即可。
例如对于stringvariables:
public partial class Login : System.Web.UI.Page { public string sError; protected void Page_Load(object sender, EventArgs e) { //Page Load Code }