Windows Communication Foundation (WCF) 使用 DataContractSerializer 做爲其默認的序列化引擎以將數據轉換到 XML 並將 XML 轉換回數據。DataContractSerializer 是專爲序列化數據協定類型而設計的。可是,它支持許多其餘可視爲具備隱式數據協定的類型。node
如下是能夠序列化的類型:編程
一、 具備不帶參數的構造函數的全部公開可見類型。數組
二、 數據協定類型。這些是已應用了 DataContractAttribute 屬性的類型。表示業務對象的新自定義類型一般應做爲數據協定類型建立。有關更多信息,請參見 使用數據協定和可序列化類型。ide
三、 集合類型。這些是表示數據列表的類型。這些類型能夠是常規的類型數組或集合類型,例如 ArrayList 和 Dictionary。CollectionDataContractAttribute 屬性能夠用於自定義這些類型的序列化,但不是必需的。有關更多信息,請參見 數據協定中的集合類型。函數
四、 枚舉類型。枚舉(包括標誌枚舉)是可序列化的。或者,可使用 DataContractAttribute 屬性對枚舉類型進行標記,在這種狀況下,必須使用EnumMemberAttribute 屬性對參與序列化的每一個成員進行標記。不序列化未標記的成員。有關更多信息,請參見 數據協定中的枚舉類型。ui
五、.NET Framework 基元類型。集成到 .NET Framework 中的下列類型均可以進行序列化,並可視爲基元類型:Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Boolean、Char、Decimal、Object 和 String。spa
六、 其餘基元類型。這些類型不是 .NET Framework 中的基元,但可做爲採用序列化的 XML 形式的基元。這些類型有DateTime、DateTimeOffset、TimeSpan、Guid、Uri、XmlQualifiedName 和 Byte 數組。 注意:與其餘基元類型不一樣,DateTimeOffset 默認狀況下不是已知類型。(有關更多信息,請參見 數據協定已知類型)。設計
七、 使用 SerializableAttribute 屬性標記的類型。.NET Framework 基類庫中包含的許多類型都屬於此類別。DataContractSerializer 徹底支持由 .NET Framework 遠程處理、BinaryFormatter 和 SoapFormatter 使用的此序列化編程模型,包括支持 ISerializable 接口。orm
八、表示原始 XML 的類型或表示 ADO.NET 關係數據的類型。支持 XmlElement 和 XmlNode 類型的數組做爲一種直接表示 XML 的方式。另外,支持實現IXmlSerializable 接口的類型,包括相關的 XmlSchemaProviderAttribute 屬性、XDocument 和 XElement 類型。ADO.NET DataTable 類型和 DataSet類型(以及其類型化的派生類)都實現 IXmlSerializable 接口,所以可納入此類別。有關更多信息,請參見 數據協定中的 XML 和 ADO.NET 類型。xml