.net中的对象序列化

序列化就是将将对象的状态信息转换为可以存储或传输的形式的过程。

在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后

可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。


在.net中有提供了几种序列化的方式:
二进制序列化
XML序列化
SOAP序列化

目前学习的只有第一个方式。所以总结一下方法:

类序列化条件
1)本身标记为可序列化
2)属性的类型标记为可序列化
3)父类也要标记为可序列化

Int,string,这些系统数据类型都已经被标记为可序列化了,而且所有类的基类

object也被标记为可序列化了,
如何将一个类标记为可序列化的类?格式如下:
[Serializable]
    public class Name
    {
      
    }
如果想将一个类的对象进行二进制序列化,那么这个类中的属性的声明就要使用

最原始的方式,即一个私有字段对应一个公共属性,这样可

以防止在二进制序列化之后,二进制文件中的字段名称不可读。

二进制序列化的步骤:
1、创建一个序列化器
    BinaryFormatter bf = new BinaryFormatter();
2、创建一个序列化文件流,以确定将序列化完成的二进制数据保存到磁盘

(不一定必须是磁盘)上的何处
     FileStream fs = new FileStream("person.bin", FileMode.OpenOrCreate);
3、使用序列化器将对象序列化为二进制数据
     bf.Serialize(fs, lys);
     Console.WriteLine("序列化成功");

反序列化的步骤:

1、创建序列化转换器
            BinaryFormatter bf = new BinaryFormatter();
2、创建文件流,指向要被反序列化的文件
            FileStream fs = new FileStream("Person.bin", FileMode.Open);
3、调用序列化转换器的方法将文件流指向的想进行反序列化,就是将二进制
数据转换为原来的对象类型(Person)
4、因为程序不知道序列化之前是什么对象类型,所以才返回object类型
            object obj= bf.Deserialize(fs);
5、自己进行类型转换,自己对转换负责
            Person lys = obj as Person;
            Console.WriteLine(lys.Name);

如果在B项目中对A项目创建的二进制文件进行反序列化,需要添加对A项目的引用,

否则无法成功反序列化
反序列化就是讲二进制文件中存储的数据提取出来,然后创建一个原有类型的对象,

然后将数据赋值给对象的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿猿网页设计(yywyss365)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值