0

我有一个用 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 的已知类型列表中。"}

4

1 回答 1

4

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

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

[DataContract]
public class Occ600UIConfig 
{ }

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

于 2010-04-19T21:20:49.220 回答