使serializable成为未定义类型的列表

时间:2012-09-10 07:37:41

标签: c# session

我使用此代码返回一个对象列表,以便将它们存储在out-proc会话中:

Session["Data"] = DataContext.ObjectSet.Select(rec => new { Title = rec.Title , Count = rec.Count });

但是如你所知,我们不能在一个out-proc会话中存储不可序列化的类,有没有办法做到这一点? 请不要说我定义它的类,我正在寻找C#中的后门或者这样做的技巧

由于

1 个答案:

答案 0 :(得分:0)

一种简单的方法是转换为数组对象

Session["Data"] = DataContext.ObjectSet
                      .Select(rec => new { Title = rec.Title , Count = rec.Count })
                      .ToArray();

您甚至可以将其转换为List oibject并将其序列化为您自己的对象

var data = DataContext.ObjectSet
             .Select(rec => new SessionData() { Title = rec.Title , Count = rec.Count })
             .ToList();

System.Web.Script.Serialization.JavaScriptSerializer oSerializer = 
     new System.Web.Script.Serialization.JavaScriptSerializer();

Session["Data"] = oSerializer.Serialize(data);

并使用

public class SessionData {
   public string Title { get; set; }
   public int Count { get; set; }
}

但是在会议中持有这样的对象......你可能会做错事吗?想象一下,在给定的时间内,您将拥有该列表的1000条记录......