• 第一个测试的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();
}
  • 程序执行结果

最新文章

  1. magento安装
  2. 日志:using the Connector/J connection property &#39;autoReconnect=true&#39; to avoid this problem
  3. python django 多级业务树形结构规划及页面渲染
  4. HDU 1080
  5. mplayer-for-windows change color scheme in win 7
  6. memmove函数
  7. OC 知识点回顾
  8. ls命令解析
  9. linux下tomcat配置APR方式HTTPS
  10. docker 学习笔记21:docker连接网络的设置
  11. php取整
  12. Ajax.BeginForm无法调用 ajaxOptions的js函数
  13. 前端构建工具之争——Webpack vs Gulp 谁会被拍死在沙滩上
  14. 浅谈 CSS 预处理器: 为什么要使用预处理器?
  15. 在IOS应用中打开另外一个应用的解决方案
  16. dos脚本
  17. Delphi中快速修改变量名称
  18. 1052: 旋转单词(words)
  19. IOS开发之xib解决自定义CollectionCell问题
  20. java日常知识点积累

热门文章

  1. 吴裕雄--天生自然 R语言开发学习:模块\包的安装命令
  2. 设置datagridview隔行变色
  3. JS中BOM操作知识点
  4. LTC
  5. .net mvc中epplus导出excel
  6. BZOJ5137&amp;&amp;lg4081(广义后缀自动机,set启发式合并)
  7. Spark学习之路 (三)Spark之RDD[转]
  8. yii2 分页
  9. UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xfe in position 45: illegal multibyte sequence
  10. vue 多组件路由处理方法