Serialization 反序列化未知类型的对象

Serialization 反序列化未知类型的对象,serialization,xml-serialization,Serialization,Xml Serialization,我有一堆被序列化为XML的对象。现在我想对它们进行反序列化,但由于我不知道给定XML字符串的类型,所以我不知道如何进行反序列化。当我知道对象的类型(在本例中为任务)时,下面是我正在使用的代码: public static Task DeserializeFromXML(string value) { Task task = new Task(); StringReader reader = new StringReader(value); XmlSerializer serializ

我有一堆被序列化为XML的对象。现在我想对它们进行反序列化,但由于我不知道给定XML字符串的类型,所以我不知道如何进行反序列化。当我知道对象的类型(在本例中为任务)时,下面是我正在使用的代码:

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需要一个传递给构造函数的类型,反序列化方法最终需要从对象转换为我刚刚反序列化的任何对象,但我现在不知道该类型是什么。

XML序列化器不包含有关序列化出的对象类型的信息。对于纯XML,您没有办法解决这个问题。序列化中不包括对象类型


NET中的其他一些序列化程序(尤其是NetDataContractSerializer)确实包含了足够的信息,可以在不事先知道的情况下重构特定的对象类型。

您使用的是.NET 1.1吗?如果没有,那么您应该使用
XmlReader.Create()
而不是
new XmlTextReader()
。首先为什么要反序列化未知类型的实例?我写了这两个方面,所以如果有更好的方法,我不必使用XML。如果我将它序列化为二进制,那么我是否能够反序列化为一个对象,然后测试它是什么类型(使用“is”)?