假设我们有一个从基类“System.Windows.Controls”派生的类“SerializedLabel”。
[XmlRoot("SerializableLabel")]
public class SerializableLabel : Label
{
public string foo = "bar";
}
我想序列化此类,但忽略父类中的所有属性。理想情况下,xml 看起来像这样:
<SerializableLable>
<foo>bar</foo>
</SerializableLable>
如何最好地实现这一目标?
我的第一次尝试使用了典型的 XmlSerializer 方法:
XmlSerializer s = new XmlSerializer(typeof(SerializableLabel));
TextWriter w = new StreamWriter("test.xml");
s.Serialize(w, lbl);
w.Close();
但这会引发异常,因为序列化程序尝试序列化作为接口的基类属性(ICommand Command)。
上述问题(包括 JP 指出的问题)的一个可能根源是您的类层次结构试图违反里氏替换原则。简单来说,派生类尝试not做基类已经做的事情。换句话说,您正在尝试创建一个不可替代基本标签的派生标签。
这里最有效的补救措施可能是将以下两件事分开:可序列化标签它尝试执行以下操作:(a) 与 UI 相关的函数;(b) 存储可序列化的数据,并将它们放在不同的类中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)