.Net Core gRPC入门实践(protobuf .proto说明)

1、repeated: 可重复变长字段,类似数组/list集合;例如:repeated int32 Name=1; 生成的C#是个创建好的、只读的空集合

ResponseModel result = new ResponseModel()
{
      Id = 1,
      Name = "小王",
      ABool = false
};
result.ADouble.AddRange(new List<double>() { 1, 2 }); //C#赋值方式

2、引入其它proto文件:import "Protos/greet.proto";   #greet.proto与当前文件在同一个目录下,必须带上”Protos/“;

枚举的使用:

enum UserType{
   type1=0;
   type2=1;
}

3、类型嵌套:

message RequestParam{
   int32 Id = 1 ;
   UserType type1 =3;
   message SubParam{
        int32 Id = 1 ;
        string name =2;
   };
   SubParam SubParams=4;
}

 4、基础类型:

.proto类型 C#类型  
double double 数值默认为0
float float 数值默认为0
int32 int

数值默认为0

使用可变长编码方式。编码负数时不够高效;如果你的字段可能含有负数,那么请使用sint32。

int64 long

数值默认为0

使用可变长编码方式。编码负数时不够高效;如果你的字段可能含有负数,那么请使用sint64。

uint32 uint 数值默认为0
uint64 ulong 数值默认为0
sint32 int

数值默认为0

使用可变长编码方式。有符号的整型值。编码时比通常的int32高效。

sint64 long

数值默认为0

使用可变长编码方式。有符号的整型值。编码时比通常的int64高效。

fixed32 uint

数值默认为0

总是4个字节。如果数值总是比2^28大的话,这个类型会比uint32高效。

fixed64 ulong

数值默认为0

总是8个字节。如果数值总是比2^56大的话,这个类型会比uint64高效。

sfixed32 int

数值默认为0

总是4个字节。

sfixed64 long

数值默认为0

总是8个字节。

bool bool bool默认为false;
string string

string默认为空字符串;

一个字符串必须是UTF-8编码或者7-bit ASCII编码的文本。

bytes Google.Protobuf.ByteString  
map Google.Protobuf.Collections.MapField 例如:map<string,string> resultMap = 1;
google.protobuf.Timestamp google.protobuf.Timestamp

需要引用一下:import public "google/protobuf/timestamp.proto";

C# 赋值方式: Time= Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime.Now)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章