当前位置: 首页 > 知识库问答 >
问题:

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

张宝
2023-03-14

我最初使用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个答案

公冶谦
2023-03-14

通过在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);
 类似资料:
  • 当我执行phpInfo时。我的Linux(fedora)上的php脚本 它给出了PHP版本5.5 而当我使用我的Apache服务器(通过浏览器)到达它时,它给了我旧的PHP 5.3版本。 发现Apache正在使用一些库(LoadMoulesphp5_module模块/libphp5.so)-在php.conf.中找到它 有人能帮助如何更改Apache正在使用的版本吗? 或者还有其他方法迫使Apac

  • 问题内容: Cloundfoundry最近将其Java buildpack更新到2.5版(包括Java 8和tomcat 8)。我仍想使用2.4版,因为我的应用尚未升级到Java 8。这样做最简单的方法是什么? 我可以使用 但是如何指定使用版本2.4(https://github.com/cloudfoundry/java- buildpack/releases/tag/v2.4 )?显然,指定标

  • 我计划从JBOSS EAP迁移到支持旧版本Java如6或7的Wildfly版本。 我找不到与野生苍蝇和java的兼容性矩阵。 另外,有任何版本的野蝇支持solaris 5吗? wildfly 8是否支持旧的java和Solaris版本。 有人能给我指一下矩阵吗?在那里我可以找到wildfly的兼容性和需求。

  • 我用AnyLogic8.7.6创建了一个模型,但我需要在更旧的(专业)版本7.0.2上继续它。我需要旧版本阅读,更重要的是,允许我修改它。谢谢

  • 和用户余额相关的信息,余额单位都是按照 CNY 的「分」作为单位。 接口不给现实数字,而是给出以 CNY 的「分」单位的数字,并在「启动者」中提供了显示转换比例,单位为百分比(%) 钱包信息 钱包信息提供进入钱包页面所需的附加信息记录接口。 在未来开发中,一些信息可能会被移动到「启动者」中。 GET /wallet 响应 Status: 200 OK { "labels":[ // 充值选

  • 我正在通过google play服务使用Google Cloud消息传递。问题是它仅适用于安装了上一个版本的play服务的设备,在其余设备中,我需要显示一个对话框以将用户发送到google play以安装新版本女巫我真的不想做! 那我怎么能避免呢?!我正在尝试使用较旧版本的play services(比如两年前的版本),以确保我的大多数用户不需要更新,但grade和android sdk似乎不可能