protobuf-net是否支持[DataMember(Order = 0)]?

时间:2012-04-26 19:48:37

标签: wcf protobuf-net

我正在使用带有WCF的protobuf-net,并发现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?

1 个答案:

答案 0 :(得分:3)

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