我将 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 一起使用?
奇怪 - 我本来以为它会出错。 Protobuf 密钥数字始终为正数,因此 0 对于 protobuf-net 确实无效。因此我希望它会抛出!正因如此,它。还可以指定应用于 WCF 键的偏移量(主要用于代理类型)。这可以通过 ProtoContractAttribute 完成(直接完成,或者如果使用代理生成则在“部分类”中完成),或者可能(我没有检查)通过 RuntimeTypeModel 在运行时应用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)