首页 新闻 搜索 专区 学院

关于c#序列化的问题

0
悬赏园豆:50 [已解决问题] 解决于 2009-02-01 10:40

以前一直都没注意这方面的问题

页很少用到

但是今天使用viewstate的时候报错说我的某个类没有序列话

这个错误不是在程序中出现的 (我调试的时候没有在viewstate处没有出这个问题)

估计实在respons的时候出现的

想问问 序列化 会影响什么 一般用在什么地方 而我这个错误又出现在在哪儿为什么

 

Code
小眼睛老鼠的主页 小眼睛老鼠 | 老鸟四级 | 园豆:2774
提问于:2009-01-06 12:10
< >
分享
最佳答案
0

你要将自动以对象存储到VIEWSTATE中,需要给对象添加 [Serializable] 特性

例如:

[Serializable]

public class A{}

之所以在你给VIEWSTATE赋值的时候没有出错误,因为赋值的时候并没有做序列化操作。

而是asp.net框架的SavePageStateToPersistenceMedium 方法做的序列化,在render之前。

 

5yplan | 小虾三级 |园豆:1330 | 2009-01-06 13:14
其他回答(3)
0

可能就是outline = GetOutline();
                course
= GetCourse(outline);返回的结果对象不知道如何序列化才引发此异常,

你可以看看它们都是什么,对于如何序列化你可以在园子里找找,有很多文章!

尚未序列化到 ViewState 中的对象,如 DataSet。ViewState 序列化程序只为一小部分常用的对象类型进行了优化,其他可序列化的类型或许可以保留在 ViewState 中,但速度会变慢,并会生成一个非常大的 ViewState。

http://www.cnblogs.com/zsi/archive/2005/04/07/132850.html

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-06 12:53
0

xuexi

Jared.Nie | 园豆:1940 (小虾三级) | 2009-01-06 14:24
0

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

                    System.IO.MemoryStream ms = new System.IO.MemoryStream();

                    b.Serialize(ms, 你的任何对象);

                    ms.Close(); ms.Dispose();

 

 

 

            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(((System.IO.MemoryStream)ms).GetBuffer());

            你的任何对象obj= (你的任何对象)b.Deserialize(ms);

            ms.Close();

            ms.Dispose();

West | 园豆:1095 (小虾三级) | 2009-01-06 14:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册