如何在C#ASP.Net Sesssion中保存对象数组?

Bri*_*per 5 c# asp.net session

我在C#ASP.Net程序中有一个在回发期间填充的对象数组,我希望在下一个回发期间恢复它们.为此,我在Default类定义中包含了数组声明,因此保存了: -

this.Session["This"] = this;
Run Code Online (Sandbox Code Playgroud)

并恢复: -

Default saved_stuff = (Default) this.Session["This"];
Run Code Online (Sandbox Code Playgroud)

这适用于除以下之外的所有内容: -

MyClass [] my_array;
Run Code Online (Sandbox Code Playgroud)

恢复时,saved_stuff.my_array总是如此null.

MyClass定义如下: -

public MyClass : ISerializable
{
    private string some_string;
    private double some_double;
    // some more simple members
    // Some getters and setters
    // ISerializable Implementation
}
Run Code Online (Sandbox Code Playgroud)

我尝试过制作MyClass工具,ISerializable但这没有任何区别.有谁知道我应该做什么?

编辑回答@ Michael的问题,我正在做的事情......

for (int i = 0; i <= saved_stuff.my_array.GetUpperBound(0); i++)
{
    // blah blah
}
Run Code Online (Sandbox Code Playgroud)

失败的"对象引用未设置为对象的实例".在调试时,所有其他成员变量Default都可见saved_stuff.

Azh*_*any 7

您必须将数组数据存储在自己的会话对象中:

MyClass[] my_array = //Something

Session["ArrayData"] = my_array;
Run Code Online (Sandbox Code Playgroud)

然后将其检索为:

var arrayData = (MyClass[])Session["ArrayData"];
Run Code Online (Sandbox Code Playgroud)