[英]Adding Item to Generic List in Session
我有一个会话助手,因此我的会话变量是强类型的:
public sealed class SessionHelper
{
private static HttpSessionState Session
{
get
{
return HttpContext.Current.Session;
}
}
public static List<TestObject> Tests
{
get
{
List<TestObject> objects = new List<TestObject>();
if (Session["Tests"] != null)
{
objects = (List<TestObject>)Session["Tests"];
}
return objects;
}
set
{
Session["Tests"] = value;
}
}
}
现在,我试图将一个项目添加到TestObjects
List
所以我认为我可以这样做:
SessionHelper.Tests.Add(new TestObject("Test name", 1));
但是,当我单步执行代码并在运行上述行之后查看SessionHelper.Tests
,列表计数仍为0。
如果我做:
List<TestObject> tests = SessionHelper.Tests;
tests.Add(new TestObject(testName, version));
SessionHelper.Tests = tests;
然后它可以正常工作。
为什么不能将测试对象直接添加到SessionHelper
?
Session["Tests"]
为null。 因此, SessionHelper.Tests
返回一个新的空列表。 但是,此新列表尚未在会话对象中。 因此, SessionHelper.Tests
每次都会返回一个新的空列表。 创建新列表后,将其存储在会话对象中。
public static List<TestObject> Tests
{
get
{
List<TestObject> objects = (List<TestObject>)Session["Tests"];
if (objects == null)
{
objects = new List<TestObject>();
Session["Tests"] = objects; // Store the new list in the session object!
}
return objects;
}
set // Do you still need this setter?
{
Session["Tests"] = value;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.