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