【发布时间】:2013-09-06 10:33:51
【问题描述】:
假设您有两个类,一个继承另一个,并且子需要使用 XmlSerializer 进行序列化/反序列化。但是,父级包含一个不可序列化的成员,比如字典。
public class Parent {
public Dictionary<string, int> dictionary;
}
父类是用于许多其他脚本的库。它不能被修改。现在子类只包含可序列化的成员:
public class Child : Parent {
[XmlElement]
public int foo;
}
尝试调用序列化程序时,我收到一条错误消息,指出字典不可序列化。在尝试用 JSON 序列化时,我设法以警告的代价逃脱了。我刚刚创建了另一个具有相同名称和类型的成员,并使用了 ScriptIgnore:
public class Child : Parent {
public int foo;
[ScriptIgnore]
public Dictionary<string, int> dictionary;
}
我在这里再次尝试了相同的技巧(通过使用 XmlIgnore),但效果不佳,错误是相同的。我设法解决这个问题的唯一方法是创建单独的类,这些类仅提供 xml 反序列化/序列化,然后将值复制回适当的位置。
有没有人知道解决这个问题的更好方法?我可以让 XmlSerializer 以任何方式忘记父字典吗?
【问题讨论】:
标签: c# xmlserializer