在servicestack中使用protobuf,为啥order只能从1而不是0开始?

Posted

技术标签:

【中文标题】在servicestack中使用protobuf,为啥order只能从1而不是0开始?【英文标题】:Using protobuf in servicestack, why order can only start from 1 not 0?在servicestack中使用protobuf,为什么order只能从1而不是0开始? 【发布时间】:2017-04-28 14:59:08 【问题描述】:

使用 servicestack 和 protobuf,我发现了一个有趣的问题。

如果我在服务器端和客户端都定义了以下类,它可以工作

[DataContract]
public class Test : IReturn<TestResponse>

    [DataMember(Order = 1)]
    public string input  get; set; 

这不是。

[DataContract]
public class Test : IReturn<TestResponse>

    [DataMember(Order = 0)]
    public string input  get; set; 

为什么order只能从1开始?

阅读这个单元测试,所有的属性顺序都是从 1 开始的。 https://github.com/ServiceStack/ServiceStack/blob/master/tests/ServiceStack.WebHost.IntegrationTests/Tests/ProtoBufServiceTests.cs

【问题讨论】:

【参考方案1】:

Order=0 是整数的默认值,与不提供值相同。

【讨论】:

我可以建议将这条信息添加到docs.servicestack.net/protobuf-format 吗? @shawhu 你对一些事情感到困惑,protobuf 格式使用 protobuf 序列化程序,它是一个独立的项目,数字索引是格式布局字段的方式,即它对格式至关重要跨度>

以上是关于在servicestack中使用protobuf,为啥order只能从1而不是0开始?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ServiceStack 中添加 protobuf

带有 ServiceStack 和紧凑框架的 Protobuf-net

如何在 ServiceStack 5.0 项目中使用来自 ServiceStack 4.0 的服务模型?

如何在 ServiceStack 中使用 Dapper

在 SQL Server 和 ServiceStack.OrmLite 中使用架构名称

ServiceStack.RabbitMQ在站点中使用时导致静态页面无法正常解析