推荐使用protobuf-net实现C# Protobuf序列化,它无需protoc编译器,通过[ProtoContract]和[ProtoMember(n)]特性标记类与成员,支持高效二进制序列化/反序列化,并提供版本兼容、性能优化等进阶功能。
在C#中使用Protobuf序列化,推荐用 protobuf-net(由Marc Gravell维护),它不依赖官方protoc编译器,支持直接通过特性(Attribute)标记类,轻量、高效、易集成。
在项目中通过NuGet安装:
dotnet add package protobuf-net
用 [ProtoContract] 标记类,用 [ProtoMember(n)] 标记字段或属性,序号 n 必须唯一且建议从1开始(兼容Protocol Buffers规范):
[ProtoContract]
public class Person
{
[ProtoMember(1)]
public int Id { get; set; }
[ProtoMember(2)]
public string Name { get; set; }
[ProtoMember(3)]
public DateTime BirthDate { get; set; }
}
⚠ 注意:字段/属性必须是public,或配合[ProtoInclude]、[ProtoIgnore]等做更细控制;不支持自动属性无getter/setter(如public string Name { get; }会报错)。
使用 Serializer 静态类完成二进制读写:
Serializer.Serialize(stream, obj)
Serializer.Deserialize(stream)
示例:
var person = new Person { Id = 123, Name = "张三", BirthDate = new DateTime(1990, 5, 1) };
// 序列化到内存流
using var ms = new MemoryStr
eam();
Serializer.Serialize(ms, person);
byte[] data = ms.ToArray();
// 反序列化回来
using var ms2 = new MemoryStream(data);
Person restored = Serializer.Deserialize(ms2);
• 默认不支持Dictionary和多维数组:需手动处理或改用 List + 自定义转换。
• 版本兼容靠字段序号,不是字段名:新增字段加新序号、旧字段不要删或改序号,可设 [ProtoMember(4, IsRequired = false, Default = 0)] 提高健壮性。
• 性能优化建议:对高频类型可预生成序列化器(RuntimeTypeModel.Default.Add(typeof(Person)).CompileInPlace();),避免运行时反射开销。
基本上就这些。不需要写 .proto 文件,也不用跑 protoc,适合快速上手和中小规模数据交换场景。
# 工具
# ai
# stream
# c#
# .net
# red
# String
# 多维数组
# public
# Attribute
# 对象
# default
# typeof
# visual studio
# 性能优化
# 序列化
# 进阶
# 不支持
# 多维
# 推荐使用
# 自定义
# 管理器
# 不需
# 报错
# 它不
相关文章:
电商网站制作价格怎么算,网上拍卖流程以及规则?
上海网站制作开发公司,上海买房比较好的网站有哪些?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
建站之星多图banner生成与模板自定义指南
如何快速登录WAP自助建站平台?
寿县云建站:智能SEO优化与多行业模板快速上线指南
如何选择靠谱的建站公司加盟品牌?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何快速搭建FTP站点实现文件共享?
外贸公司网站制作哪家好,maersk船公司官网?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何配置支付宝与微信支付功能?
自助网站制作软件,个人如何自助建网站?
装修招标网站设计制作流程,装修招标流程?
移民网站制作流程,怎么看加拿大移民官网?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
nginx修改上传文件大小限制的方法
网站图片在线制作软件,怎么在图片上做链接?
建站VPS配置与SEO优化指南:关键词排名提升策略
网站制作话术技巧,网站推广做的好怎么话术?
如何通过山东自助建站平台快速注册域名?
如何在万网自助建站平台快速创建网站?
购物网站制作公司有哪些,哪个购物网站比较好?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
如何在IIS中配置站点IP、端口及主机头?
动图在线制作网站有哪些,滑动动图图集怎么做?
如何在橙子建站上传落地页?操作指南详解
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
如何快速启动建站代理加盟业务?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
建站之星展会模版如何一键下载生成?
php json中文编码为null的解决办法
SQL查询语句优化的实用方法总结
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
建站上市公司网站建设方案与SEO优化服务定制指南
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
建站主机选购指南:核心配置与性价比推荐解析
如何在西部数码注册域名并快速搭建网站?
如何基于云服务器快速搭建个人网站?
建站主机是否等同于虚拟主机?
建站主机无法访问?如何排查域名与服务器问题
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
定制建站是什么?如何实现个性化需求?
建站之星导航菜单设置与功能模块配置全攻略
*请认真填写需求信息,我们会在24小时内与您取得联系。