2

アイテムのリストを取得し、アイテムを追加し、単一のアイテムを取得する 3 つのメソッドを持つ wcf サービスがあります。

基本クラスから継承される可能性のある型は 4 つあります。サービスは、派生クラスごとに ServiceKnownType で装飾されています。

サービスを利用し、アセンブリを再利用して poco を参照することを選択しない場合、getlist は期待どおりに機能します。アセンブリを再利用すると、リストはシリアライゼーション例外をスローします。

wcf クライアントによって生成された reference.cs ファイルを見ると、生成された基本クラスに KnownTypeAttribute が作成されていることがわかります。基本クラスを再利用するプロジェクトでは、代わりに ServiceKnownTypeAttribute でメソッドを装飾します。

したがって、Web メソッドを呼び出してリストを返すと、次のようになります... デシリアライザーは、この名前にマップされる型を認識しません。DataContractResolver の使用を検討するか、'TheChildObject' に対応する型を既知の型のリストに追加します。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストに追加します。

この問題の回避策はありますか? かなり一般的である必要がありますか?

4

1 に答える 1