ISerializable用法(初级)

来源:互联网 发布:淘宝有哪些官方手办店 编辑:程序博客网 时间:2024/05/16 04:31

家里只有一台电脑,影响老婆看电视剧了。赶紧拷贝完,洗袜子去...

不解释,看注释。

/* * Created by SharpDevelop. * User: iwateru * Date: 2012/12/15 * Time: 18:52 *  * To change this template use Tools | Options | Coding | Edit Standard Headers. */using System;using System.IO;using System.Xml;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Security.Permissions;namespace TestISerializable{/// <summary>/// SerialBase:继承自ISerializable/// </summary>[Serializable]public class SerialBase : ISerializable{public int n1;public int n2;public String str;public SerialBase(){}#region  ISerializable Members/// <summary>/// 构造函数/// </summary>/// <param name="info"></param>/// <param name="context"></param>protected SerialBase(SerializationInfo info, StreamingContext context){n1 = info.GetInt32("n1");n2 = info.GetInt32("n2");str = info.GetString("str");}/// <summary>/// ISerializable接口函数/// </summary>/// <param name="info"></param>/// <param name="context"></param>[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]public virtual void GetObjectData(SerializationInfo info, StreamingContext context){info.AddValue("n1", n1);info.AddValue("n2", n2);info.AddValue("str", str);}#endregion}[Serializable]public class SerialDerived : SerialBase{public int num;public SerialDerived() : base(){}#region  ISerializable Members/// <summary>/// 构造函数/// </summary>/// <param name="si"></param>/// <param name="context"></param>protected SerialDerived(SerializationInfo si, StreamingContext context) : base(si, context){num = si.GetInt32("num");}/// <summary>/// ISerializable接口函数/// </summary>/// <param name="si"></param>/// <param name="context"></param>[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]public override void GetObjectData(SerializationInfo si, StreamingContext context){base.GetObjectData(si, context);si.AddValue("num", num);}#endregion}class Program{/// <summary>/// 保存/// </summary>public static void SerializeBinary(){SerialDerived obj = new SerialDerived();obj.n1 = 123;obj.n2 = 234;obj.str = "dsojgoajd";obj.num = 333;FileStream stream = new FileStream("test.bin", FileMode.Create);BinaryFormatter b = new BinaryFormatter();b.Serialize(stream, obj);stream.Close();}/// <summary>/// 读取/// </summary>public static void DeserializeBinary(){SerialDerived obj = new SerialDerived();FileStream stream = new FileStream("test.bin", FileMode.Open, FileAccess.Read, FileShare.Read);BinaryFormatter b = new BinaryFormatter();obj = b.Deserialize(stream) as SerialDerived;Console.WriteLine(obj.n1);Console.WriteLine(obj.n2);Console.WriteLine(obj.str);Console.WriteLine(obj.num);stream.Close();}public static void Main(string[] args){// TODO: Implement Functionality Here// 保存并且读取为二进制文件SerializeBinary();DeserializeBinary();Console.Write("Press any key to continue . . . ");Console.ReadKey(true);}}}


 

原创粉丝点击