提问者:小点点

使用旧版本的Google Protobuf创建对象


我最初使用Google Protobuf 3.1 protoc编译器自动生成文件路径。cs类。因为文件路径。proto文件是为proto2语法编写的,我必须手动将文件更改为comform到proto3。

事实证明,出于我无法控制的原因,我需要坚持使用proto2语法。我发现protoc版本3.0.0alpha3支持proto2文件的C#代码生成(较新的protoc版本不支持proto2文件的C#代码生成,这就是我恢复为alpha 3的原因)。

生成的代码不同,我之前存在的代码(最初使用protoc 3.1,现在不再工作):

    FilePath fp = new FilePath
    {
        Path = "TestPath",
        TestValue = 5.0f
    };  

这段代码不再适用于alpha3生成的文件。有人知道如何使用旧版本的Pro buf正确序列化/反序列化对象吗,或者是否将旧教程存档在某处?

我能够做到:

FilePath fp; 
fp.Path = "test_path_here"; //ERROR - no SETTER, only a GETTER

字段Path和TestValue只有getter,没有setter。


共1个答案

匿名用户

通过在github上使用旧版本的Protobufs项目,我们找到了答案。我找到了一个java示例,该示例使我了解了如何在C#中创建新对象。看看这个3.0。x源,您应该能够找到它:https://github.com/google/protobuf/blob/3.0.x/examples/AddPerson.java

这就是我的结局:

    FilePath.Builder fp = FilePath.CreateBuilder();
    fp.SetPath("TestPath");
    fp.SetTestValue(7.0f);