protobuf-net简单使用
2024-10-08 08:38:40
- 第一个测试的proto文件
syntax = "proto3";
package ProtoMsg; message Foo
{
string name = ;
int32 id = ;
repeated bytes data = ;
enum Types
{
Hight = ;
Low = ;
Normal = ;
}
Types type = ;
}
- 第二个测试proto文件
syntax = "proto3";
import "Foo.proto";
package ProtoMsg; message FooWapper
{
repeated Foo foos = ;
}
- 分别生成C#源文件
protogen.exe Foo.proto --csharp_out=./
protogen.exe FooWrapper.proto --csharp_out=./
- 例子程序
static void Main(string[] args)
{
FooWapper fw = new FooWapper();
Foo f = new Foo();
f.Datas.Add(new byte[] {0x1, 0x2, 0x3});
f.Id = ;
f.Name = "proto-net";
f.Type = Foo.Types.Hight;
fw.Foos.Add(f); byte[] data;
Console.WriteLine("开始序列化数据.");
using (var stream = new MemoryStream())
{
Serializer.Serialize(stream, fw);
data = stream.ToArray();
} Console.WriteLine("开始反序列化数据.");
using (var stream = new MemoryStream(data))
{
var _fw = Serializer.Deserialize<FooWapper>(stream);
Console.WriteLine(_fw);
} Console.ReadKey();
}
- 程序执行结果
最新文章
- magento安装
- 日志:using the Connector/J connection property &#39;autoReconnect=true&#39; to avoid this problem
- python django 多级业务树形结构规划及页面渲染
- HDU 1080
- mplayer-for-windows change color scheme in win 7
- memmove函数
- OC 知识点回顾
- ls命令解析
- linux下tomcat配置APR方式HTTPS
- docker 学习笔记21:docker连接网络的设置
- php取整
- Ajax.BeginForm无法调用 ajaxOptions的js函数
- 前端构建工具之争——Webpack vs Gulp 谁会被拍死在沙滩上
- 浅谈 CSS 预处理器: 为什么要使用预处理器?
- 在IOS应用中打开另外一个应用的解决方案
- dos脚本
- Delphi中快速修改变量名称
- 1052: 旋转单词(words)
- IOS开发之xib解决自定义CollectionCell问题
- java日常知识点积累
热门文章
- 吴裕雄--天生自然 R语言开发学习:模块\包的安装命令
- 设置datagridview隔行变色
- JS中BOM操作知识点
- LTC
- .net mvc中epplus导出excel
- BZOJ5137&;&;lg4081(广义后缀自动机,set启发式合并)
- Spark学习之路 (三)Spark之RDD[转]
- yii2 分页
- UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xfe in position 45: illegal multibyte sequence
- vue 多组件路由处理方法