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