1

ソースコード: http://code.google.com/p/sevenupdate/source/browse/#hg/Source/SevenUpdate.Base

SevenUpdate.Base.Sui はインポートした DataContract と一致しないため使用できません。参照される型からこの型を除外する必要があります。

ここで、再利用参照型のチェックを外してみましたが、プロジェクトをコンパイルすることができました。しかし、クライアントからコレクションを送信すると、サーバー側で受信されなかったか、逆シリアル化できませんでした。

私は本当にこれが機能する必要があります。助けていただければ幸いです。完全なソース コードは Google コードによって提供されます。

4

2 に答える 2

0

ソースをダウンロードしてビルドしませんでしたが、このクラスの DataContract が不足している可能性がありますか? Sui クラスには DataMember として Sua 型のプロパティがあるため、これもシリアル化する必要があります。現在、コードでは次のようになっています

[ProtoContract, ]
[KnownType(typeof(ObservableCollection<LocaleString>))]
public class Sua
于 2010-03-23T03:24:04.940 に答える
0

このエラーを再現するにはどうすればよいですか? 最初のビット (データ コントラクトの一致について) は、WCF があなたにあまり満足していないように聞こえます。これは、2 つの類似した (ただし異なる) コントラクトが「実行中」であることを示唆しています。共有ライブラリの型を再利用している場合、これは問題になりません。

タイプを除外することになった場合(およびクライアントとサーバーで異なるモデルを持つ場合)、「mex」は位置がそのまま維持されることを保証しないため(さらに、それらは定期的に変更されます)、少しトリッキーになる可能性があります-ただし、[ProtoPartialMember(...)]に対していくつかを使用することで、部分クラスでこれを修正できます(きれいではありませんが機能します)。

しかし、私は強調します - ここでの主な問題は WCF のようです。コードがコード生成/コンパイルされないなど、それが満足できない場合は、私の手はかなり縛られています(protobuf-netとの通信までは到達しないため)。

于 2010-03-23T07:56:29.397 に答える