重新造轮子 TT
ref = CXuesong/XSerializer/
欢迎围观 TT
最近一直在考虑以下问题:
在使用 XmlSerializer 以精确控制 XML 格式的同时
- 如何序列化
Nullable<T>格式的数据,并将其保存为 XML 属性(而非元素)? - 如何序列化对象的引用,使其不会以多个副本的形式保存?
- 在实现上面这两点(尤其是第一点)的时候,不会引入其他的公共辅助属性。
(例如对于第一点,可以通过一个辅助属性,实现Nullable<T>与string之间的转换,而string是可以保存为 XML 属性的。)
其中,第二个问题似乎可以使用 DataContractSeriallizer 来解决。然而 DataContractSeriallizer 会在生成 XML 时自行为对象确定 Id,并使用 z:Id 和z:Ref 来表示 Id 和 Id 引用。正如在前几篇文章中提到的那样,DataContractSeriallizer 对 XML 结构的控制自由度是十分有限的。
那么,如何才能圆满地解决这些问题呢?
我觉得,可以自己造轮子了。
