3

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で動作しないのですか?

4

1 に答える 1

3

奇妙な-私はそれでエラーになると思っていたでしょう。Protobufキー番号は常に正であるため、protobuf-netでは0は実際には無効です。したがって、私はそれが投げることを期待します!このため、それ。WCFキーに適用するオフセットを指定することもできます(主にプロキシタイプでの使用を目的としています)。これは、ProtoContractAttributeを介して(直接、またはプロキシ生成を使用する場合は「部分クラス」で)実行できます。または、RuntimeTypeModelを介して実行時に適用できます(まだチェックしていません)。

于 2012-04-26T20:11:33.860 に答える