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

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时不起作用?

1个回答

3

奇怪 - 我本以为会出现错误。Protobuf键号始终为正数,因此0确实不适用于protobuf-net。因此,我希望它会抛出异常!基于这个原因,也可以指定一个偏移量来应用于WCF密钥(主要用于代理类型)。这可以通过ProtoContractAttribute(直接或在“partial class”中使用代理生成),或者可能(我没有检查)通过RuntimeTypeModel在运行时应用。


谢谢!显然我的问题是这个的重复,我在搜索中没有找到:http://stackoverflow.com/questions/1239295/stubborn-object-wont-serialize-with-protobuf-net - Joe Strommen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接