【发布时间】:2009-10-25 04:26:48
【问题描述】:
我有一个对象InputFile,它有数组和对象来保存文件的内容。我还有ABCFile 和XYZFile,它们都继承自InputFile,它们将读取不同类型的文件并将它们存储到InputFile 的投影成员中。
由于这两个对象的序列化和反序列化与父对象相同,所以我在父对象上实现了标准的XML序列化接口。在反序列化过程中读取一些参数,调用Read 函数(以加载文件),然后反序列化完成。
序列化效果很好,但反序列化(List<InputFile>)不起作用,因为反序列化程序调用父存根文件函数Read,而不是ABCFile 或XYZFile。
如何让反序列化识别要使用的正确类型的对象?我的List<InputFile> 可能会有多种文件类型。
谢谢
我用来序列化对象的代码:
public class InputFileHolder : IXmlSerializable {
...
public void WriteXml(XmlWriter w) {
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer ifXml = new XmlSerializer(typeof(List<InputFile>));
ifXml.Serialize(w, InputFiles, ns);
//More serialization
}
在我自定义序列化列表时如何维护对象类型有什么想法吗?
【问题讨论】:
标签: c# xml inheritance serialization