我有问题将我的对象从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