扩展为序列化只读属性

时间:2014-03-01 08:51:48

标签: c# .net serialization access-modifiers

我正在编写一个允许序列化多维数组的简单扩展。在内部我使用XmlSerializer作为数组项,但它不适用于只读属性。那么如何使用XmlSerializer(或类似DataContractSerializer之类的其他类)在XML中序列化它们,而无需修改类以具有这些属性。我的意思是我有方法Serialize<T>(T obj),我可以为任何T序列化它,甚至像KeyValuePair<T,U>这样具有只读属性的结构。

1 个答案:

答案 0 :(得分:1)

XmlSerializerDataContractSerializer无效。

使用DataContractSerializer,您可以序列化/反序列化private甚至readonly字段/属性,但是每个要序列化的字段/属性都需要使用DataMember属性进行标记,因此它不能用于任意类型,例如KeyValuePair<K,V>

除了使用XML API(例如Linq2Xml)和反射手动完成之外,您可以查看sharpserializer,它似乎完全符合您的目标。