一千萬個為什麽

搜索

DataContractSerializer KnownType屬性不受尊重?

我有一個用KnownType屬性裝飾的類,類屬於類。這是不允許的?

  [KnownType(typeof(Occ600UIConfig))]
    public class Occ600UIConfig 
    { }

如果是這樣,為什麽DCS會拋出以下異常?

{“第1行第387位錯誤。   元件   ' http://schemas.microsoft.com/2003/10/Serialization/Arrays :值”   包含的數據   ' http://schemas.datacontract.org/2004/07 /OCC600.Infrastructure.Dictionary.BusinessEntities:Occ600UIConfig ”   數據合同。解串器沒有   任何映射到的類型的知識   這份合同。添加類型   對應'Occ600UIConfig'來   已知類型的列表 - 例如,   通過使用KnownTypeAttribute   屬性或將其添加到列表中   已知類型的傳遞給   DataContractSerializer的。“}

最佳答案

KnownType 屬性用於定義和“通告”可能也在給定上下文中使用的基類的後代類。

但是,WCF中的數據類應該主要用 [DataContract] 屬性標記(以及要包含 [DataMember] 屬性的所有成員):

[DataContract]
public class Occ600UIConfig 
{ }

如果您沒有任何繼承層次結構,則永遠不需要KnownType屬性。

轉載註明原文: DataContractSerializer KnownType屬性不受尊重?