打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ISerializable用法(初级)
/*
 * 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);
}
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数据结构与算法:10 队列与多线程
underscore.js 学习(一) – ued.shikee
TCP粘包处理现象及其解决方案——基于NewLife.Net网络库的管道式帧长粘包处理方法
ref与out的区别
在C#中的作用-NET 中的对象序列化
Stage模型
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服