当前位置:编程学习 > asp >>

.NET中序列化和持久化(一)

本人编程道行很浅,只有两三年的道行,所以本文的内容讲的不深入,只供给菜鸟们看看,所以老鸟们不要笑我,欢迎老鸟们指出问题,也欢迎新手们讨论。

我写文章的目的有两个,1是想巩固消化自己所学的内容,2是能和广大的程序猿讨论。

-------------------------------------------------废话分割线-------------------------------------------------

      大家都知道.NET中的对像中存着许多的状态(成员变量),当我们想把对象保存起来,我们就要通过数据库把数值存放起来,下次使用时在从数据库中把数值取出,重新赋值到对像上。开发人员就要编写一大串的机械式的代码,就不能把有效果的时间发在业务上。现在向大家介绍个对像序列化的功能,可以把对像序列化成二进制或soap格式的文件,当下次需要在用该对像的状态就可以直接反序列化该文件,生成对像。

  说了那么多,直接上例子吧。

  [Serializable]    public class MyClass    {        public string Name        {            get;            set;        }        public int Age        {            get;            set;        }    }在对像上加个[Serializable]属性就是告诉编译器该类是可以被序列化的,

对客户端还要使用有命名空间System.Runtime.Serialization.Formatters.Binary中的BinaryFormatter类,将MyClass 的对像序列化成二进制的文件流写入到文件中

客户端例子

            MyClass my = new MyClass();            my.Name = "凤姐";            my.Age = int.MaxValue;            System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();            //创建一个文件流            Stream stream = new FileStream(@"c:\MyClass.bin", FileMode.Create, FileAccess.Write);            using (stream)            {                //这里就是进行序列化了                formatter.Serialize(stream, my);            }哈哈哈OK了,对像被序列化进去了。当你的程序闭关下次要用的时候就将c:\MyClass.bin的文件反序列化出来就好了,反序列化出来的对像的Nam值还是凤姐,Age值还是int.MaxValue

现在我将介绍如何反序列化

客户端例子

            //不用NEW了反序列化后会给出一个该对像的引用            MyClass my;            System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();            //打开一个文件流            Stream stream = new FileStream(@"c:\MyClass.bin", FileMode.Open, FileAccess.Read);            using (stream)            {                //这里就是反进行序列化了                my = (MyClass)formatter.Deserialize(stream);            }现在最简单的 序列化和反序列化都介绍完了大家可以看出,我们不用去把数据库在数据库中在去数据库取数据构造对像,序列化的功能在一些特殊的场景还是比较方便的

这里我只是介绍下变量为值类型的,下次我介绍为引用类型的序列化、和不可序列化、序列化成SOAP格式的介绍。

 作者“人道编程”

补充:Web开发 , ASP.Net ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,