C# 从 C# 创建原型文件 class

C# create proto file from c# class

我正在尝试从我的 c# class 为一些外部合作者生成 protobuf 文件。 问题是:我有很多可为空的值(int?,double?)

但是当我这样做的时候:

string protoOutput = Serializer.GetProto<Test>();

和class

[ProtoContract]
public class Test
{
    [ProtoMember(1)]
    public int? TEST { get; set; }

    [ProtoMember(2)]
    public DateTime SDF { get; set; }
}

proto 序列化器输出是:

 syntax = "proto3";
import "google/protobuf/timestamp.proto";

message Test {
   int32 TEST = 1;
   .google.protobuf.Timestamp SDF = 2;
}

我如何配置序列化器以获得 :

google.protobuf.Int32Value

对于我的 int? 属性

提前致谢

protobuf-net 目前不以 Int32Value 的形式公布数据,即使它公布了:这不是 int? 的编码方式,所以:那会很糟糕。

然而,我们应该在这里做的是利用(相当​​新的)proto3 存在跟踪功能(上次接触该代码时不存在) .手动解释一下,这意味着:“添加optional”,即

syntax = "proto3";
import "google/protobuf/timestamp.proto";

message Test {
   optional int32 TEST = 1;
   .google.protobuf.Timestamp SDF = 2;
}

它提供了一种检测“无值”的机制,同时仍然与相关编码有线兼容。对于今天,我会说:手动添加 optional