问题描述
高手来啊!怎么把一个非序列化的对象序列化然后保存到SESSION中!最好是C#代码!先谢谢大家了!
解决方案
解决方案二:
既然是非序列化的,那么就不能通过序列化来处理对象,如果一定要存到Session中,可以把其主要的属性或字段存到Session中,等需要使用对象的时候,使用New建立新的对象,然后把Session中的值再设置到新的对象中,以此来使用对象。
解决方案三:
序列化对象了,你就得到一个保存文件地址,然后在Session里面象保存字符串那样保存这个地址就行了。在需要的地方载入在个地址,反序列化得到对象。
解决方案四:
如果非要序列化的话同意楼上的说法.
解决方案五:
usingSystem;usingSystem.IO;usingSystem.Collections;usingSystem.Runtime.Serialization.Formatters.Binary;usingSystem.Runtime.Serialization;publicclassApp{[STAThread]staticvoidMain(){Serialize();Deserialize();}//序列化staticvoidSerialize(){Hashtableaddresses=newHashtable();addresses.Add("Jeff","123MainStreet,Redmond,WA98052");addresses.Add("Fred","987PineRoad,Phila.,PA19116");addresses.Add("Mary","POBox112233,PaloAlto,CA94301");FileStreamfs=newFileStream("DataFile.dat",FileMode.Create);BinaryFormatterformatter=newBinaryFormatter();try{formatter.Serialize(fs,addresses);}catch(SerializationExceptione){Console.WriteLine("Failedtoserialize.Reason:"+e.Message);throw;}finally{fs.Close();}}//反序列化staticvoidDeserialize(){Hashtableaddresses=null;FileStreamfs=newFileStream("DataFile.dat",FileMode.Open);try{BinaryFormatterformatter=newBinaryFormatter();addresses=(Hashtable)formatter.Deserialize(fs);}catch(SerializationExceptione){Console.WriteLine("Failedtodeserialize.Reason:"+e.Message);throw;}finally{fs.Close();}foreach(DictionaryEntrydeinaddresses){Console.WriteLine("{0}livesat{1}.",de.Key,de.Value);}}}
解决方案六:
:)---
解决方案七:
把对象放到容器里,如List(推荐使用泛型容器,C#的泛型容器不像java的泛型容器只是语法糖,C#的泛型有性能提升),然后把容器保存到Session就可以了,容器都是可串行化的,要么你就自己写个包装类,贴上Serializale属性就可以了
解决方案八:
yanjinbin01说的应该可以