我有問題將我的對象從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)]
時,我在客戶端上收到錯誤null參考錯誤。如果我刪除它,我會收到錯誤Not Found。我試過KnowType
和ServiceKnownType
,但沒有奏效。我檢查了svcTrace,它只是說序列化錯誤。我在哪裏做錯了。
SVC TRACE 設置InnerException消息是「類型 'xxxCoverageEntity' 數據合同名稱 'xxxCoverageEntity:http://schemas.datacontract.org/2004/07/xxxBusinessEntities預計不會'。添加不是靜態已知的已知類型
這裏xxxCoverageEntity列表中的任何類型的Child_A樣品
嘿,也許你有這個問題的解決方案? – Jacob 2016-05-05 07:54:20