C#:如何使类变量持久化

时间:2012-06-19 03:23:40

标签: c#

在我的C#代码隐藏文件(.cs)中,我只有一个类,它派生自System.Web.UI.Page。该类包含字典数组。在其中一个按钮点击,即在按钮单击事件处理函数中,我创建此类的对象并执行某些操作。现在,在另一个按钮单击时,我需要做一些其他需要属于在前一个按钮单击时创建的对象或类实例的数据。我怎样才能做到这一点?我需要所有数据,特别是属于该对象/类实例的字典数组。

2 个答案:

答案 0 :(得分:3)

HTTP无状态。所以没有直接的方法来做到这一点。

您可以做的是将其保存在某种存储机制中,以后再访问它。您可以考虑将数据库tableSession等...

以下是存储在Session

中的示例
 YourClass object1=new YourClass();
 object1.SomeProperty="HTTP is stateless"; 
 Session["ThatObject"]=object1;

您可以在下一个按钮点击事件中访问此内容

 if(Session["ThatObject"]!=null)
 {
   YourClass object1=(YourClass) Session["ThatObject"];
   //now you can access object1 properties here.
 }

在会话中存储这么多项目并不是一个好主意,因为它会使服务器因存储在服务器中的会话而哭泣。

答案 1 :(得分:1)

您可以使用静态声明,使其在请求中保持持久性。

static IDictionary<string,object> myPersistentDict;

当然,您必须通过这种方法担心线程安全。如果您使用的是.NET 4,那么有一个内置的字典类可以为您处理,ConcurrentDictionary

static ConcurrentDictionary<string, object> myPersistentDict;