有没有一种巧妙的方法可以在不修改序列化类的情况下添加 XML 序列化指令?
我不喜欢默认的序列化,也不能修改类。我正在考虑继承该类,并使用 Shadows (VB.NET) 重新实现属性(使用序列化指令),但这会导致大量重复代码并且看起来很糟糕。
我正在寻找的理想解决方案基本上是将所有序列化指令保存在单独文件中的方法。
有没有一种巧妙的方法可以在不修改序列化类的情况下添加 XML 序列化指令?
我不喜欢默认的序列化,也不能修改类。我正在考虑继承该类,并使用 Shadows (VB.NET) 重新实现属性(使用序列化指令),但这会导致大量重复代码并且看起来很糟糕。
我正在寻找的理想解决方案基本上是将所有序列化指令保存在单独文件中的方法。
您是否考虑过使用 XmlAttributeOverrides?
.NET Framework 类库:XmlAttributeOverrides 类
首先,您可以控制和增强在 DLL 中找到的对象的序列化——即使您无权访问源代码;
其次,您可以创建一组可序列化的类,但以多种方式序列化对象 。例如,您可以将它们序列化为 XML 属性,而不是将类实例的成员序列化为 XML 元素,从而提高文档传输效率。
使用反射从类中获取所有属性的值,然后将它们作为属性写入 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
}