C# 在会话中操作列表

C# 在会话中操作列表,c#,asp.net,session,webforms,C#,Asp.net,Session,Webforms,我有下面的代码,它看起来像预期的那样工作,但是我想确认是否有人做过类似的事情,并且我确实得到了我认为我得到的行为 public class Foo { public int Id { get; set; } public string Bar { get; set; } } public class SomeWebFormsAspxCodeBehind : System.Web.UI.Page { public List<Foo> Foos {

我有下面的代码,它看起来像预期的那样工作,但是我想确认是否有人做过类似的事情,并且我确实得到了我认为我得到的行为

public class Foo
{
    public int Id { get; set; }
    public string Bar { get; set; }
}

public class SomeWebFormsAspxCodeBehind : System.Web.UI.Page
{
    public List<Foo> Foos
    {
        get
        {
            if (Session["MyFoos"] == null)
                Session["MyFoos"] = new List<Foo>();

            return (List<Foo>)Session["MyFoos"];
        }
        set
        {
            Session["MyFoos"] = value;
        }
    }

    public void AddItemToListInSession(Foo foo)
    {
        this.Foos.Add(foo);
    }
}
这段代码似乎正在运行,我正在将Foos绑定到dataview源代码并获得预期的结果


但是,在会话中存储列表时,我需要注意哪些问题?列表的所有功能如何。添加在列表处于会话状态时继续工作?这种行为是在列表或会话中抽象出来的,还是两者的结合?

您不必担心,当您从会话对象获取它时,列表的功能与存储的列表完全相同。我不知道你为什么不这么想。@ClaudioRedi这看起来像是魔术。。。我天生不相信魔术:如果你的问题是在会话中存储对象然后检索它时会发生什么,那么我建议你开始阅读会话和序列化。根据所使用的会话存储,对象实际上是序列化和反序列化的。您可以调用的方法等功能不驻留在对象中,而是驻留在类型中。