我有一个用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的。“}
答案 0 :(得分:4)
KnownType
属性用于定义和“通告”可能也在给定上下文中使用的基类的后代类。
但是,您在WCF中的数据类应主要使用[DataContract]
属性标记(以及要包含[DataMember]
属性的所有成员):
[DataContract]
public class Occ600UIConfig
{ }
如果您没有任何继承层次结构,则永远不需要KnownType属性。