基本上,如果我将我的类标记为[DataContract]
,我仍然可以编写自己的序列化程序,该序列化程序从XmlObjectSerializer扩展,返回二进制文件的方式与我[Serializable]
时的方式相同吗?
答案 0 :(得分:1)
是的,你可以,但请记住,如果继承自XmlObjectSerializer
,序列化程序必须处理XML。您使用哪个XML编写器/读取器将确定您是否使用二进制表示。一个“二进制”XML读取器/写入器是由XmlDictionaryReader.CreateBinaryReader
和XmlDictionaryWriter.CreateBinaryWriter
创建的。
http://blogs.msdn.com/b/carlosfigueira/archive/2011/03/29/wcf-extensibility-icontractbehavior.aspx上的帖子有一个示例,显示了一个自定义XmlObjectSerializer,如果与二进制XML编写器一起使用,可以将对象序列化到相当小的大小。