反序列化未知类型的对象

时间:2011-12-02 01:06:21

标签: serialization xml-serialization

我有一堆被序列化为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转换为我刚刚反序列化的类型,但我不知道此类型是什么。

1 个答案:

答案 0 :(得分:1)

XML序列化程序不包含有关序列化的对象类型的信息。使用直接XML,您无法解决这个问题。对象类型不包含在序列化中。

.NET中的其他一些序列化程序(尤其是NetDataContractSerializer)确实包含了足够的信息来重建特定的对象类型,而无需提前知道它们。