.NET怎么序列化和反序列化一个二进制对象

幻夢星雲
发布: 2025-11-06 12:08:03
原创
592人浏览过
BinaryFormatter 虽可序列化二进制对象,但已过时且不安全;2. 推荐使用 protobuf-net 实现高效、跨平台序列化;3. 类需标记 [Serializable] 或 [ProtoContract],字段按序标注以确保兼容性。

.net怎么序列化和反序列化一个二进制对象

在 .NET 中,要序列化和反序列化一个二进制对象,可以使用 BinaryFormatter 类。虽然它在较新版本的 .NET(如 .NET 5+)中已被标记为过时并默认禁用,但在某些旧项目或特定场景下仍可使用。推荐方式是使用更安全、性能更好的替代方案,比如 System.Text.Json 或第三方库如 protobuf-net。下面先介绍 BinaryFormatter 的基本用法,再给出现代推荐做法。

使用 BinaryFormatter 进行二进制序列化与反序列化

注意:BinaryFormatter 存在安全风险,不建议用于不可信数据,且在 .NET Core/.NET 5+ 中默认禁用。

要使用 BinaryFormatter,目标类必须加上 [Serializable] 特性。

示例代码:

[Serializable]
public class Person
{
   public string Name { get; set; }
   public int Age { get; set; }
}

序列化到二进制文件:

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

var person = new Person { Name = "张三", Age = 30 };
using (var fs = new FileStream("person.bin", FileMode.Create))
{
   var formatter = new BinaryFormatter();
   formatter.Serialize(fs, person);
}

从二进制文件反序列化:

序列猴子开放平台
序列猴子开放平台

具有长序列、多模态、单模型、大数据等特点的超大规模语言模型

序列猴子开放平台 0
查看详情 序列猴子开放平台
using (var fs = new FileStream("person.bin", FileMode.Open))
{
   var formatter = new BinaryFormatter();
   var person = (Person)formatter.Deserialize(fs);
   Console.WriteLine($"{person.Name}, {person.Age}");
}

推荐方式:使用 protobuf-net(高效且跨平台)

更现代、安全且高效的二进制序列化方式是使用 protobuf-net 库,它基于 Google Protocol Buffers,支持 .NET Framework 和 .NET Core/5+。

安装 NuGet 包: Install-Package protobuf-net

使用示例: using ProtoBuf;

[ProtoContract]
public class Person
{
   [ProtoMember(1)]
   public string Name { get; set; }

   [ProtoMember(2)]
   public int Age { get; set; }
}

序列化:

using (var file = File.Create("person.pb"))
{
   Serializer.Serialize(file, person);
}

反序列化:

using (var file = File.OpenRead("person.pb"))
{
   var person = Serializer.Deserialize<Person>(file);
   Console.WriteLine($"{person.Name}, {person.Age}");
}

小结

- BinaryFormatter 简单但不安全,已过时,仅适用于旧项目。 - 推荐使用 protobuf-net 实现高性能、跨平台的二进制序列化。 - 标记字段顺序(如 ProtoMember(1))有助于兼容性。 - 所有需要序列化的类型都应正确标注特性。

基本上就这些。根据项目环境选择合适的方式即可。

以上就是.NET怎么序列化和反序列化一个二进制对象的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号