Wcf 是否不尊重DataContractSerializer KnownType属性?

Wcf 是否不尊重DataContractSerializer KnownType属性?,wcf,datacontracts,Wcf,Datacontracts,我有一个类,它用一个KnownType属性修饰,该属性的类型为class。这是不允许的吗 [KnownType(typeof(Occ600UIConfig))] public class Occ600UIConfig { } 如果是,为什么DCS会抛出以下异常 第1行第387位出现{”错误。 元素 '' 包含 '' 数据协定。反序列化程序没有 映射到的任何类型的知识 此合同。添加类型 对应于“Occ600UIConfig”的 已知类型的列表-例如, 通过使用KnownTy

我有一个类,它用一个KnownType属性修饰,该属性的类型为class。这是不允许的吗

  [KnownType(typeof(Occ600UIConfig))]
    public class Occ600UIConfig 
    { }
如果是,为什么DCS会抛出以下异常

第1行第387位出现{”错误。 元素 '' 包含 '' 数据协定。反序列化程序没有 映射到的任何类型的知识 此合同。添加类型 对应于“Occ600UIConfig”的 已知类型的列表-例如, 通过使用KnownTypeAttribute 属性或将其添加到列表中 传递给的已知类型的 DataContractSerializer。“}


KnownType
属性用于定义和“公布”基类的子类,这些子类也可能在给定上下文中使用

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


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

KnownType属性用于定义和“公布”基类的子类,这些子类也可能在给定上下文中使用

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

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

[DataContract]
public class Occ600UIConfig 
{ }