DataContractSerializer KnownType属性没有被尊重?

时间:2010-04-19 21:11:47

标签: wcf datacontracts

我有一个用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'   数据合同。解串器没有   任何映射到的类型的知识   这份合同。添加类型   对应'Occ600UIConfig'来   已知类型列表 - 例如,   通过使用KnownTypeAttribute   属性或将其添加到列表中   已知类型的传递给   DataContractSerializer的。“}

1 个答案:

答案 0 :(得分:4)

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

但是,您在WCF中的数据类应主要使用[DataContract]属性标记(以及要包含[DataMember]属性的所有成员):

[DataContract]
public class Occ600UIConfig 
{ }

如果您没有任何继承层次结构,则永远不需要KnownType属性。