我正在编写一个允许序列化多维数组的简单扩展。在内部我使用XmlSerializer
作为数组项,但它不适用于只读属性。那么如何使用XmlSerializer
(或类似DataContractSerializer
之类的其他类)在XML中序列化它们,而无需修改类以具有这些属性。我的意思是我有方法Serialize<T>(T obj)
,我可以为任何T
序列化它,甚至像KeyValuePair<T,U>
这样具有只读属性的结构。
答案 0 :(得分:1)
XmlSerializer
或DataContractSerializer
无效。
使用DataContractSerializer
,您可以序列化/反序列化private
甚至readonly
字段/属性,但是每个要序列化的字段/属性都需要使用DataMember
属性进行标记,因此它不能用于任意类型,例如KeyValuePair<K,V>
。
除了使用XML API(例如Linq2Xml)和反射手动完成之外,您可以查看sharpserializer,它似乎完全符合您的目标。