【发布时间】:2012-02-16 12:42:21
【问题描述】:
我在将我的对象从 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 错误。如果我删除它,我会收到错误 Not Found。我试过KnowType 和ServiceKnownType 但没有用。我检查了 svcTrace,它只是说序列化错误。我在哪里做错了。
SVC 追踪 InnerException 消息是 'Type 'xxxCoverageEntity',数据合同名称为 'xxxCoverageEntity : http://schemas.datacontract.org/2004/07/xxxBusinessEntities' 不是预期的。将任何静态未知的类型添加到已知类型列表中
这里 xxxCoverageEntity 是示例中的 Child_A
【问题讨论】:
-
嘿,你有解决这个问题的办法吗?
标签: wcf serialization silverlight-3.0