Welcome

首页 / 软件开发 / WCF / WCF系列(五) 也谈序列化(下)

WCF系列(五) 也谈序列化(下)2010-12-29 cnblogs chnking1、DataContractSerializer支持的类型....................................2

1.1.用[DataContract]属性标记的类型....................................2

1.2..net 原生类型.....................................................2

1.3.用[Serializable]属性标记的类型...................................2

1.4.枚举类型.........................................................3

1.5.呈现为xml的类型...................................................3

1.6.集合类型.........................................................3

2、定义需要使用DataContractSerializer序列化的类........................3

2.1.DataContract属性的参数...........................................3

2.2.DataMember属性的参数.............................................4

2.3.[DataContract]属性标识的类型跟XmlSerializer序列化器的类型的不同....4

2.4.准备待序列化的用 DataContract标识类................................5

2.5.准备待序列化的用DataContract标识类型的对象.........................7

3、使用DataContractSerializer类不同的方法序列化用DataContract标识类型的对象....7

3.1.使用WriteObject(Stream stream, object graph)方法序列化..................8

3.2.使用WriteObject(XmlDictionaryWriter writer, object graph)方法序列化....10

3.2.1.CreateTextWriter方法..............10

3.2.2.CreateMtomWriter方法..............13

3.2.3.CreateBinaryWriter方法............18

3.3.DataContractSerializer序列化总结.....19

在WCF中,DataContractSerializer是默认的序列化器,不过WCF中还有一个叫NetDataContractSerializer的序列化器,它跟DataContractSerializer一样也是从XmlObjectSerializer类继承。NetDataContractSerializer跟DataContractSerializer一个主要的不同是:NetDataContractSerializer序列化后的xml中包含了.net的类型信息,反序列化时必须要被反序列化为同样类型的对象,这点跟BinaryFormatter和SoapFormatter这两个序列化器类似。DataContractSerializer序列化后的xml中则不包含.net的类型信息,通用性和交互性更好。在实际应用中DataContractSerializer是WCF的默认序列化器,绝大多数情况下都是使用DataContractSerializer,下面我们只对DataContractSerializer做详细介绍。