protobuf-net简单使用
- 第一个测试的proto文件
1 syntax = "proto3"; 2 package ProtoMsg; 3 4 message Foo 5 { 6 string name = 1; 7 int32 id = 2; 8 repeated bytes data = 3; 9 enum Types 10 { 11 Hight = 0; 12 Low = 1; 13 Normal = 2; 14 } 15 Types type = 4; 16 }
- 第二个测试proto文件
1 syntax = "proto3"; 2 import "Foo.proto"; 3 package ProtoMsg; 4 5 message FooWapper 6 { 7 repeated Foo foos = 1; 8 }
- 分别生成C#源文件
1 protogen.exe Foo.proto --csharp_out=./ 2 protogen.exe FooWrapper.proto --csharp_out=./
- 例子程序
1 static void Main(string[] args) 2 { 3 FooWapper fw = new FooWapper(); 4 Foo f = new Foo(); 5 f.Datas.Add(new byte[] {0x1, 0x2, 0x3}); 6 f.Id = 12345678; 7 f.Name = "proto-net"; 8 f.Type = Foo.Types.Hight; 9 fw.Foos.Add(f); 10 11 byte[] data; 12 Console.WriteLine("开始序列化数据."); 13 using (var stream = new MemoryStream()) 14 { 15 Serializer.Serialize(stream, fw); 16 data = stream.ToArray(); 17 } 18 19 Console.WriteLine("开始反序列化数据."); 20 using (var stream = new MemoryStream(data)) 21 { 22 var _fw = Serializer.Deserialize<FooWapper>(stream); 23 Console.WriteLine(_fw); 24 } 25 26 Console.ReadKey(); 27 }
- 程序执行结果
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗