WCFからSL3へのオブジェクトの転送に問題があります。ネストされたリストのシリアル化
interface IComposite {
ICollection<Child_A> Children{ get; set; }
}
[DataContract]
[knownType(typeof(ChildCollection))]
[knownType(typeof(ICollection<Child_A>))]
class Composite : IComposite {
ChildCollection c = null;
[DataMember]
public string Name { get;set;}
[DataMember]
public ICollection<Child_A> Children { get {
return c??(c=new ChildCollection());
} set;}
}
[CollectionDataContract]
class ChildCollection : List<Child_A> {
}
[DataContract]
class Child_A {
[DataMember]
string Name { get;set; }
}
[OperationContract]
Composite GetData(){
var data = new Composite();
data.Children.Add(new Child_A() { Name = "child_a_1" });
return data;
}
私はSL3からサービスを呼び出すと、私はリストにComposite
オブジェクトが、ノーアイテムを取得します。 Composite
には他にもコレクションがあります。 [DataMember(Order=0/1)]
を設定すると、クライアントでエラーnullreferenceエラーが発生します。私がそれを取り除くと、私はエラーが見つかりません。私はKnowType
とServiceKnownType
を試しましたが、うまくいきませんでした。私はsvcTraceをチェックしました、単にシリアライゼーションエラーと言います。私が間違っているところ。
SVC TRACE のInnerExceptionメッセージがxxxCoverageEntity 'データコントラクト名を持つ '「タイプ' xxxCoverageEntityた:http://schemas.datacontract.org/2004/07/xxxBusinessEntitiesは' 期待されていません。ここでは、既知の種類のリスト
に静的に知られていない任意の種類を追加xxxCoverageEntityはChild_AはあなたがDataMember
で、コレクションに注釈を付ける必要があるか、それがすべてでシリアル化され得ることはありませんサンプル
どうかこの問題の解決方法がありますか? – Jacob