【发布时间】:2012-12-15 00:14:00
【问题描述】:
我的 C# ASP.Net 程序中有一个在回发期间填充的对象数组,我希望在下一次回发期间恢复它们。为此,我在 Default 类定义中包含数组声明,这样保存:-
this.Session["This"] = this;
并恢复:-
Default saved_stuff = (Default) this.Session["This"];
这适用于除以下之外的所有内容:-
MyClass [] my_array;
恢复后,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
}
我尝试让MyClass 实现ISerializable,但这并没有什么区别。有人知道我应该做什么吗?
编辑来回答@Michael的问题,然后我会做...
for (int i = 0; i <= saved_stuff.my_array.GetUpperBound(0); i++)
{
// blah blah
}
失败并显示“对象引用未设置为对象的实例”。 Default 的所有其他成员变量在调试时在 saved_stuff 中可见。
【问题讨论】:
-
Iserializable 无关紧要,因为您没有写入磁盘。你的数组真的很大,还是你花了很长时间来检索数据?可能是服务器超载了。似乎是一个很奇怪的问题。
-
@MrFox,数组有十几个元素,我正在开发我的开发机器,很抱歉没有超载。
-
从会话中检索数组的代码是什么?你说它不起作用——但它是什么?
-
啊,您从未直接存储或检索数组。这就是让我失望的原因。仍然如此,看看上面的内容。