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) |