IExtensibleDataObject 详解

IExtensibleDataObject,MSDN给出的解释为:提供一个数据结构,用于存储 XmlObjectSerializer 在反序列化一个用 DataContractAttribute 属性标记的类型期间遇到的额外数据。

IExtensibleDataObject 相当于提供类似于double到int的转换,但区别在于此转换并不舍弃多余数据(比如小数部分)而只是隐藏,

IExtensibleDataObject 在反序列化过程中保证xml和反序列化对象中共同存在的元素出现在反序列化后的对象中,并保证多余数据不丢失,

说明:

假设A,B是继承IExtensibleDataObject的两个类 ,并且A和B都拥有同名同类型的2个属性x,y,但B比A多了一个c属性。

1使用DataCantracttSerializer将一个B对象序列化为xml保存,(xml中拥有三个属性)

2使用上一步的xml反序列化成A对象,(A对象的两个属性都有值)

3在将反序列化的A对象序列化为xml,(xml中还是拥有3个对象)

4使用上一步的xml发序列化成B对象(B对象中还是原有三个属性,并且没有属性丢失值)

可参考“http://www.cnblogs.com/CharlesLiu/archive/2010/02/09/1666605.html”中的代码

posted @ 2011-08-05 17:38  think_do  阅读(262)  评论(0编辑  收藏  举报