3

我将 protobuf-net 与 WCF 一起使用,并发现 Order = 0 的数据成员未显示在客户端上。这是我的数据合同 - ObjectId 在客户端始终是 Guid.Empty。

<DataContract()> _
Public Class ProtocolBufferDataContract

    <DataMember(Order:=0)> _
    Public Property ObjectId() As Guid

    <DataMember(Order:=1)> _
    Public Property Title() As String

End Class

我正在使用共享程序集机制,因此服务器和客户端都是针对此类编译的。如果我将订单更改为 1 和 2,一切正常。为什么它不适用于 0?

4

1 回答 1

3

奇怪 - 我本以为它会出错。protobuf 键号始终为正数,因此 0 确实对 protobuf-net 无效。因此,我希望它会抛出!为此,它。也可以指定偏移量以应用于 WCF 键(主要用于代理类型)。这可以通过 ProtoContractAttribute 完成(直接,或者如果使用代理生成,则在“部分类”中),或者可能(我尚未检查)在运行时通过 RuntimeTypeModel 应用。

于 2012-04-26T20:11:33.860 回答