2012-04-26 86 views
2

我正在使用protobuf-net与WCF,并发现Order = 0的数据成员没有显示在客户端上。这是我的数据合约 - ObjectId在客户端始终是Guid.Empty。protobuf-net是否支持[DataMember(Order = 0)]?

<DataContract()> _ 
Public Class ProtocolBufferDataContract 

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

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

End Class 

我正在使用shared-assembly机制,所以服务器和客户端都是针对这个类编译的。如果我将订单更改为1和2,则一切正常。为什么它不适用于0?

回答

3

奇怪 - 我本来预计它会出错。 Protobuf的关键数字总是正数,所以0对于protobuf-net来说确实无效。因此,我期望它抛出!为此,它。也可以指定应用于WCF密钥的偏移量(主要用于代理类型)。这可以通过ProtoContractAttribute(如果使用代理生成,直接或在“部分类”中)完成,或者可能(我没有选中)通过RuntimeTypeModel在运行时应用。

+0

谢谢!显然我的问题是这一个,我没有在我的搜索中找到一个愚蠢的:http://stackoverflow.com/questions/1239295/stubborn-object-wont-serialize-with-protobufnet – 2012-04-26 20:52:52