2012-04-26 6 views
2

WCFでprotobuf-netを使用しており、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 

共有アセンブリメカニズムを使用しているため、サーバーとクライアントの両方がこのクラスに対してコンパイルされます。注文を1と2に変更すると、すべてが機能します。なぜ0で動かないのですか?

答えて

3

奇数 - 私はそれが間違っていると思います。 Protobufのキー番号は常に正の値なので、protobuf-netでは0が有効ではありません。それゆえ、私はそれがスローすることを期待する!このため、それは。 WCFキーに適用するオフセットを指定することもできます(主にプロキシタイプで使用することを意図しています)。これは、ProtoContractAttribute(直接、またはプロキシ生成を使用する場合は「部分クラス」)で実行できます。また、RuntimeTypeModelを使用して実行時に適用することもできます。

+0

ありがとうございました!明らかに私の質問は私の検索で見つけられなかったこの1冊です:http://stackoverflow.com/questions/1239295/stubborn-object-wont-serialize-with-protobuf-net –

関連する問題