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

C# 使用旧版本的Google Protobuf创建对象,c#,protocol-buffers,protobuf-csharp-port,C#,Protocol Buffers,Protobuf Csharp Port,我最初使用Google Protobuf 3.1 protoc编译器自动生成Filepath.cs类。因为filepath.proto文件是按照proto2语法编写的,所以我必须手动将文件更改为comform到proto3 事实证明,出于我无法控制的原因,我需要坚持使用proto2语法。我发现protoc版本3.0.0alpha3支持proto2文件的C#代码生成(较新的protoc版本不支持proto2文件的C#代码生成,这就是我恢复到alpha 3的原因) 生成的代码不同,我先前存在的代码(

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

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

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

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

我能够做到:

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

字段
Path
TestValue
只有getter,没有setter

通过在github上使用旧版本的Protobufs项目来解决这个问题。我发现了一个java示例,它让我了解了如何在C#中创建新对象。看看这个3.0.x源代码,您应该能够找到它:

这就是我的结局:

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