【问题标题】:DataContractSerializer KnownType attribute not being respected?DataContractSerializer KnownType 属性不被尊重?
【发布时间】:2010-04-19 21:11:46
【问题描述】:

我有一个用 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。"}

【问题讨论】:

    标签: wcf datacontracts


    【解决方案1】:

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

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

    [DataContract]
    public class Occ600UIConfig 
    { }
    

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

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多