如何在不修改类的情况下添加XML序列化指令
本文关键字:添加 情况下 XML 序列化 指令 修改 | 更新日期: 2023-09-27 17:47:49
有没有一种巧妙的方法可以在不修改序列化类的情况下添加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
}