是否有一种聪明的方法可以在不修改序列化类的情况下添加XML序列化指令?
我不喜欢默认的序列化,我不能修改类。我正在考虑继承该类,并使用Shadows(VB.NET)重新实现属性(使用序列化指令),但它会导致很多重复的代码并且看起来很糟糕。
我正在寻找的理想解决方案基本上是一种将所有序列化指令保存在单独文件中的方法。
答案 0 :(得分:3)
您是否考虑过使用XmlAttributeOverrides?
.NET Framework Class Library: XmlAttributeOverrides Class
首先,您可以控制和扩充DLL中找到的对象的序列化 - 即使您无权访问源;
第二,您可以创建一组可序列化的类,但序列化中的对象 多种方式。例如,而不是序列化类的成员 实例作为XML元素,您可以将它们序列化为XML属性, 从而产生更有效的文件传输。
答案 1 :(得分:0)
使用反射从类中获取所有属性的值,然后将它们作为属性写入XmlNode
PropertyInfo[] properties = control.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
object o = property.GetValue(control, null);
// write value of o.ToString() out as an attribute on a XmlNode
// where attribute name is property.Name
}