C#序列化和反序列化
来源:互联网 发布:ubuntu php编译 编辑:程序博客网 时间:2024/04/29 10:48
C#序列化和反序列化
系列化是将对象写入流的过程,而反序列化是从流中读取对象的过程。在类上使用[Serializable]属性标注为可序列化,用[NoSerializable]标注某变量不可被序列化。
有时候在程序中徐希望将一个变量序列化,却希望在反序列化的时候可以得到这个对象进行的操作,而得到没有被序列化的变量,这是可以通过执行Ideserialization CallBack接口来实现。该接口只包含了一个方法:
void OnDeserialization(Object sender)
一个简单的例子如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;namespace ConsoleApplication1{ [Serializable] class Add : IDeserializationCallback { private int num1; private int num2; [NonSerialized] private int sum; public Add() { } public Add(int num1, int num2) { this.num1 = num1; this.num2 = num2; } public int Apply() { sum = num1 + num2; return sum; } public int Result { get { return sum; } } public void OnDeserialization(Object sender) { sum = num1 + num2; } } class Program { static void Main(string[] args) { Add add = new Add(1,2); add.Apply(); FileStream fs = new FileStream("c:\\c-sharp.txt",FileMode.OpenOrCreate); BinaryFormatter binFormatter = new BinaryFormatter(); Console.WriteLine("object serializable ..."); binFormatter.Serialize(fs, add); fs.Position = 0; Console.WriteLine("deserializable ..."); Add sum = (Add)binFormatter.Deserialize(fs); Console.WriteLine("Add.sum=" + sum.Result); //sum.Apply(); Console.WriteLine("1+2="+sum.Result); } }}
- c# 序列化和反序列化
- C#序列化和反序列化
- C#序列化和反序列化
- C#序列化和反序列化
- c#序列化和反序列化
- C#序列化和反序列化
- C#序列化和反序列化
- C# - 序列化和反序列化
- C#序列化和反序列化
- C#序列化和反序列化
- C#序列化和反序列化
- C#序列化和反序列化
- C#序列化和反序列化
- C# 序列化和反序列化
- C# 序列化和反序列化
- C# 序列化和反序列化
- C#序列化和反序列化
- C#序列化和反序列化
- Java多线程设计模式详解学习笔记五——GuardedSuppension
- MVVM(Model-View-ViewModel)实例讲解
- 达芬奇工具链的建立(工程编译步骤),特别是函数中参数传递的输入方法
- Linux环境编程--进程
- TFS2010的跨域迁移
- C#序列化和反序列化
- printf输出格式
- 巴菲特豪赌银行股:别人恐惧时我贪婪
- PartitionMagic合成分区后的文件夹拒绝访问,并且无法删除的解决方案
- Remoting事件处理全接触
- swt中获取图片相对路径的方法
- C++四种类型转换总结
- Fck发布文章错误
- 在linux中关于cpu的函数