怎么样将一个类序列化存储到数据中然后在,取出来 [Serializable]class a{ int age = 10; string name = "XXXX"} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、引用一个二进制序列化类2、用函数将当前版本序列化3、序列化数据流a、引用一个二进制序列化类b、用函数将当前版本反序列化c、反序列化数据流d、将数据流转成指定的类型,使用 using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters; using System.Runtime.Serialization.Formatters.Binary;将对象写到数组objectdata,然后你可以将数组存到文件或通进网络发出去public void WriteObject(Object o){ MemoryStream ms=new MemoryStream(); IFormatter objFormatterFromStream = new BinaryFormatter(); objFormatterFromStream.Serialize(ms,o); byte[] objectData=ms.ToArray(); int objectDataLength=objectData.Length;}从文件或通进网络读入数datatmp,然后反序列化public Object ReadObject (){netStream.Read(datatemp,0,dataLength);MemoryStream ms=new MemoryStream(datatemp);IFormatter objFormatterFromStream = new BinaryFormatter(); Object o=(Object)objFormatterFromStream.Deserialize(ms); return o;} 序列化可能会出现版本问题,如果简单的使用[Serializable],在类修改属性后,将不能反序列化旧版本的文件。采用方法:继承接口:ISerializable实现接口方法:(SecurityAction.Demand,SerializationFormatter=true)]void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context){ info.AddValue("age", this.age); info.AddValue("name ",this.name);}[SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)]private a(SerializationInfo info, StreamingContext context) { try{this.age= (int)info.GetValue("age",typeof(int));}catch{age=10//如果没有反序列化成功的默认值} try{this.name= (string)info.GetValue("name",typeof(string));}catch{name=""//如果没有反序列化成功的默认值}}这样再调用序列化和反序列化的时候就可以。 accp6.0MyKTV项目代码谁有啊 线程间效率的影响 C#程序重新启动的问题 C#数据同步相关 sql语句查询工作日内查询工作日内超过48小时的 如何在C#中输出C++6.0所绘制的窗体 高分求发邮件代码!顶者有分 为什么是乱码? C#中如何创建文本文件? SQL语句,急! 字节数组中可不可以查找某个值在数组中的位置? 谁帮我分析一下这个正则表达式,谢谢
2、用函数将当前版本序列化
3、序列化数据流a、引用一个二进制序列化类
b、用函数将当前版本反序列化
c、反序列化数据流
d、将数据流转成指定的类型,使用
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;将对象写到数组objectdata,然后你可以将数组存到文件或通进网络发出去
public void WriteObject(Object o)
{
MemoryStream ms=new MemoryStream();
IFormatter objFormatterFromStream = new BinaryFormatter();
objFormatterFromStream.Serialize(ms,o);
byte[] objectData=ms.ToArray();
int objectDataLength=objectData.Length;
}从文件或通进网络读入数datatmp,然后反序列化
public Object ReadObject ()
{
netStream.Read(datatemp,0,dataLength);
MemoryStream ms=new MemoryStream(datatemp);
IFormatter objFormatterFromStream = new BinaryFormatter();
Object o=(Object)objFormatterFromStream.Deserialize(ms);
return o;
}
采用方法:
继承接口:ISerializable
实现接口方法:
(SecurityAction.Demand,SerializationFormatter=true)]
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("age", this.age);
info.AddValue("name ",this.name);
}
[SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)]
private a(SerializationInfo info, StreamingContext context)
{
try{this.age= (int)info.GetValue("age",typeof(int));}catch{age=10//如果没有反序列化成功的默认值}
try{this.name= (string)info.GetValue("name",typeof(string));}catch{name=""//如果没有反序列化成功的默认值}
}这样再调用序列化和反序列化的时候就可以。