在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
转自:http://www.cnblogs.com/firstyi/archive/2008/03/18/1111800.html
序列化和反序列化我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。 这个类比较简单,就是定义了一些public字段和一个可读写的属性,一个private字段,一个标记为[NonSerialized]的字段,具体会在下面的例子中体现出来
Book book = new Book();
book.BookID = "1"; book.alBookReader.Add("gspring"); book.alBookReader.Add("永春"); book.strBookName = "C#强化"; book.strBookPwd = "*****"; book.SetBookPrice("50.00"); BinarySerialize serialize = new BinarySerialize(); serialize.Serialize(book); 2、反序列化
BinarySerialize serialize = new BinarySerialize();
Book book = serialize.DeSerialize(); book.Write(); 3、测试用的 主要就是调用System.Runtime.Serialization.Formatters.Binary空间下的BinaryFormatter类进行序列化和反序列化,以缩略型二进制格式写到一个文件中去,速度比较快,而且写入后的文件已二进制保存有一定的保密效果。 主要就是调用System.Runtime.Serialization.Formatters.Soap空间下的SoapFormatter类进行序列化和反序列化,使用之前需要应用System.Runtime.Serialization.Formatters.Soap.dll(.net自带的) 从这三个测试类我们可以看出来其实三种方法的调用方式都差不多,只是具体使用的类不同
>
输出截图如下:
Book book = new Book();
book.BookID = "1"; book.alBookReader.Add("gspring"); book.alBookReader.Add("永春"); book.strBookName = "C#强化"; book.strBookPwd = "*****"; book.SetBookPrice("50.00"); Book book2 = new Book(); book2.BookID = "2"; book2.alBookReader.Add("gspring"); book2.alBookReader.Add("永春"); book2.strBookName = ".NET强化"; book2.strBookPwd = "*****"; book2.SetBookPrice("40.00"); book.relationBook = book2; book2.relationBook = book; BinarySerialize serialize = new BinarySerialize(); serialize.Serialize(book); 这样就会出现循环引用的情况,对于BinarySerialize和SoapSerialize可以正常序列化(.NET内部进行处理了),对于XmlSerialize出现这种情况会报错:"序列化类型 SerializableTest.Book 的对象时检测到循环引用。" |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论