C#如何实现序列化和反序列化
发表于:2024-12-02 作者:千家信息网编辑
千家信息网最后更新 2024年12月02日,这篇文章给大家分享的是有关C#如何实现序列化和反序列化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。.net下有一种技术叫做对象序列化,说得通俗一点,C#序列化就是把一个对
千家信息网最后更新 2024年12月02日C#如何实现序列化和反序列化
这篇文章给大家分享的是有关C#如何实现序列化和反序列化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
.net下有一种技术叫做对象序列化,说得通俗一点,C#序列化就是把一个对象保存到一个文件或数据库字段中去,C#反序列化就是在需要的时候再把这个文件转化成原来的对象使用。
在.NET中常见的C#序列化的方法主要也有三个:二进制序列化、XML序列化、SOAP序列化。
下面通过一个小例子来说明这三种方法的使用。
using System; using System.Collections.Generic; using System.Text; namespace FileSerializer { [Serializable] public class Book { string id; string name; public string Id { get { return id; } set { id = value; } } public string Name { get { return name; } set { name = value; } } public Book() { } public Book(string id,string name) { this.id = id; this.name = name; } public override string ToString() { return "编号:" + id + "\t名称:" + name; } } } using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Xml.Serialization; namespace FileSerializer { public abstract class Serializer< T> { string filePath; public string FilePath { get { return filePath; } set { filePath = value; } } public Serializer(string filePath) { this.filePath = filePath; } public void Serialize(T serializeObj) { using (Stream st = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { S(st, serializeObj); } } protected abstract void S(Stream st, T serializeObj); public T Deserialize() { using (Stream st = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { return D(st); } } protected abstract T D(Stream st); } } using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace FileSerializer { class SerializerBinary< T> : Serializer< T> { public SerializerBinary(string filePath) : base(filePath) { } protected override void S(Stream st, T serializeObj) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(st, serializeObj); } protected override T D(Stream st) { BinaryFormatter bf = new BinaryFormatter(); return (T)bf.Deserialize(st); } } } using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.Soap; namespace FileSerializer { public class SerializerSoap< T> : Serializer< T> { public SerializerSoap(string filePath) : base(filePath) { } protected override void S(Stream st, T serializeObj) { SoapFormatter sf = new SoapFormatter(); sf.Serialize(st, serializeObj); } protected override T D(Stream st) { SoapFormatter sf = new SoapFormatter(); return (T)sf.Deserialize(st); } } } using System; using System.Collections.Generic; using System.Text; using System.Xml.Serialization; using System.IO; namespace FileSerializer { public class SerializerXml< T> : Serializer< T> { public SerializerXml(string filePath) : base(filePath) { } protected override void S(Stream st, T serializeObj) { XmlSerializer xs = new XmlSerializer(typeof(T)); xs.Serialize(st, serializeObj); } protected override T D(Stream st) { XmlSerializer xs = new XmlSerializer(typeof(T)); return (T)xs.Deserialize(st); } } } using System; using System.Collections.Generic; using System.Text; namespace FileSerializer { class Program { static void Main(string[] args) { Book book = new Book("01","C#程序设计入门01"); Serializer< Book> serializer = new SerializerBinary< Book>("bookBinary"); serializer.Serialize(book); Book newbook = serializer.Deserialize(); Console.WriteLine(newbook.ToString()); book = new Book("02", "C#程序设计入门02"); serializer = new SerializerSoap< Book>("bookSoap.soap"); serializer.Serialize(book); newbook = serializer.Deserialize(); Console.WriteLine(newbook.ToString()); book = new Book("03", "C#程序设计入门03"); serializer = new SerializerXml< Book>("bookXml.xml"); serializer.Serialize(book); newbook = serializer.Deserialize(); Console.WriteLine(newbook.ToString()); Console.ReadLine(); } } }
感谢各位的阅读!关于"C#如何实现序列化和反序列化"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
序列
C#
对象
程序
程序设计
设计
内容
就是
文件
方法
更多
篇文章
不错
实用
通俗
三个
下有
二进制
例子
名称
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
杭州网络安全平台教育平台
合肥中瑞网络技术
修改新时达服务器
对外软件开发需要哪学证
菏泽ios软件开发推荐
数据库最新发展趋势ppt
公司网络技术有哪些
幼儿园网络安全工作简报
北京兼职用什么软件开发
魔兽世界高级服务器配置要求
蒲江国家网络安全宣传周
软件开发预算差太多
武汉易企营网络技术有限公司
服务器电源开关黄灯
广东应用软件开发商
地球都市跑酷服务器
代理服务器搜索软件
计算机网络技术指哪方面
持久性 数据库
计算机与网络技术应用试题
安卓云服务器怎么连接
阿里云域名服务器怎么卖
网络安全法 基本原则
深圳元宇宙网络技术
梦幻西游转服务器要多长时间
dhc服务器绑定
电脑远程云服务器
学会查数据库要多久
提高网络安全防护技术
福建亿隆软件开发电话