我有一堆被序列化为XML的对象。现在我想反序列化它们,但由于我不知道给定XML字符串的类型是什么,我无法弄清楚如何做到这一点。当我知道对象是什么类型(在这种情况下为Task)时,我正在使用的代码是:
public static Task DeserializeFromXML(string value)
{
Task task = new Task();
StringReader reader = new StringReader(value);
XmlSerializer serializer = new XmlSerializer(task.GetType());
XmlReader xmlReader = new XmlTextReader(reader);
task = (Task)serializer.Deserialize(xmlReader);
return task;
}
我很困惑,因为XmlSerializer需要传递给构造函数的类型,而Deserialize方法最终需要从Object转换为我刚刚反序列化的类型,但我不知道此类型是什么。
答案 0 :(得分:1)
XML序列化程序不包含有关序列化的对象类型的信息。使用直接XML,您无法解决这个问题。对象类型不包含在序列化中。
.NET中的其他一些序列化程序(尤其是NetDataContractSerializer)确实包含了足够的信息来重建特定的对象类型,而无需提前知道它们。