博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win10 UWP 序列化
阅读量:4677 次
发布时间:2019-06-09

本文共 2143 字,大约阅读时间需要 7 分钟。

将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

<!--more-->
 

.NET Framework 提供了两个序列化技术:

  • 二进制序列化保持类型保真,这对于多次调用应用程序时保持对象状态非常有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等。远程处理使用序列化,“按值”在计算机或应用程序域之间传递对象。

  • XML 序列化只序列化公共属性和字段,并且不保持类型保真。当您希望提供或使用数据而不限制使用该数据的应用程序时,这一点非常有用。

Binary

首先需要定义一个类,这个类作为保存的类,需要使用特性 Serializable

然后使用 binaryFormatter 他可以写入流

创建一个文件夹,返回和People类,就可以把他保存在本地

BinaryFormatter binaryFormatter = new BinaryFormatter();            FileStream stream = new FileStream("./file", FileMode.Create);            binaryFormatter.Serialize(stream, people);

这就是序列化,如果需要从保存的文件拿出来,可以参见下面代码:

using (FileStream stream = new FileStream("./file", FileMode.Open))            {                people = (People) binaryFormatter.Deserialize(stream);                Console.WriteLine(people.Name);            }

可以看到代码都是使用命令行不是使用通用程序

XML序列化

XmlSerializer xmlSerializer = new XmlSerializer(typeof(People));            using (FileStream stream = new FileStream("./file", FileMode.Create))            {                xmlSerializer.Serialize(stream, people);            }            using (FileStream stream = new FileStream("./file", FileMode.Open))            {                people = (People)xmlSerializer.Deserialize(stream);                Console.WriteLine(people);            }

如果有一些属性需要不显示,也就是不放在文件,可以参见:

XmlSerializer 创建 C# 文件并将其编译为 .dll 文件,以执行此序列化。

为了提高性能,XML 序列化基础结构动态生成程序集,以便对指定类型进行序列化和反序列化。该基础结构将找到并重新使用这些程序集。仅当使用以下构造函数时,才会发生此行为:

XmlSerializer.XmlSerializer(Type)

XmlSerializer.XmlSerializer(Type, String)

如果使用任何其他构造函数,则将生成同一个程序集的多个版本,这些版本始终不予卸载

Yaml序列化

首先搜索 YamlDotNet ,安装

这里使用参见

参见:

本作品采用进行许可。欢迎转载、使用、重新发布,但务必保留文章署名(包含链接: ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我。

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

转载于:https://www.cnblogs.com/lindexi/p/6949646.html

你可能感兴趣的文章
如何理解一台服务器可以绑定多个ip,一个ip可以绑定多个域名
查看>>
springmvc 传递和接收数组参数
查看>>
Duplicate files copied in APK META-INF/DEPENDENCIES
查看>>
(转译)用FFmpeg和SDL写播放器--08软件缩放
查看>>
Codeigniter 3.0 相关文档 part two
查看>>
函数执行顺序
查看>>
课题实践总结
查看>>
java word导入导出工具类
查看>>
Castle ActiveRecord学习实践(7)级联
查看>>
赋值运算符重载函数
查看>>
POJ_1733 Parity game 【并查集+离散化】
查看>>
别在需要制度和文化的时候表错了情
查看>>
jupyter 快捷键
查看>>
SpringBoot打包项目成war包,并部署到服务器的tomcat上
查看>>
前端面试
查看>>
判断文件的字符编码
查看>>
VirtualBox如何扩展虚拟机Ubuntu的硬盘容量?
查看>>
JAVA操作数据库插入中文表中显示乱码的解决方法
查看>>
SSM综合练习crm
查看>>
SQL ---子查询
查看>>