Десериализация объекта неизвестных типов - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть куча объектов, которые были сериализованы в 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 нужен тип, переданный конструктору, а метод Deserialize в конце концов нуждается вбыть преобразованным из Object в то, что я только что десериализовал, но я не знаю, что это за тип на данный момент.

1 Ответ

1 голос
/ 02 декабря 2011

Сериализатор XML не содержит информации о типах объектов, которые сериализуются.С прямым XML у вас нет возможности обойти это.Тип объекта не включен в сериализацию.

Некоторые другие сериализаторы в .NET (особенно NetDataContractSerializer) содержат достаточно информации для восстановления определенных типов объектов, не зная их заранее.

...