2010-04-19 55 views
0

我有一个装饰有类型的KnownType属性的类。这是不允许的?DataContractSerializer KnownType属性不被尊重?

[KnownType(typeof(Occ600UIConfig))] 
    public class Occ600UIConfig 
    { } 

如果是这样,为什么DCS会抛出以下异常?

{“在第1点的位置误差387。 元 ‘http://schemas.microsoft.com/2003/10/Serialization/Arrays:Value’ 包含 ‘http://schemas.datacontract.org/2004/07/OCC600.Infrastructure.Dictionary.BusinessEntities:Occ600UIConfig’ 数据契约的数据。串并转换器具有映射到 本合同的任何类型的无 知识。通过使用KnownTypeAttribute 属性或通过将其添加到列表传递给 d已知类型的 例如, - 添加对应于“Occ600UIConfig”到 已知类型的列表的类型 ataContractSerializer“。}}

回答

4

KnownType属性用于定义和”公布“可能也在给定上下文中使用的基类的后代类。

但在WCF数据类应主要以[DataContract]属性(你想用一个[DataMember]属性包括所有成员)注明:

[DataContract] 
public class Occ600UIConfig 
{ } 

如果你没有任何继承层次,你从不需要KnownType属性。