Мне пришлось заменить имя класса, но у пользователя все еще может быть много xml-файлов со старым именем класса, поэтому я бы поддержал оба.Проблема в том, что метод Deserialize никогда не возвращается, если старый XML читается с неверным именем класса, если он запускается в новом потоке
Task.Factory.StartNew(() =>
{
... //other tasks requiring new thread
XmlSerializer deserializer = new XmlSerializer(typeof(Newtype));
StreamReader reader = new StreamReader(xmlpath);
Newtype XmlData = (Newtype)deserializer.Deserialize(reader); //freezes thread
reader.Close(); //never reached
Если я запускаю его в потоке пользовательского интерфейса, он не останавливается, и я получаю
InvalidOperationException: <Oldtype xmlns=''> was not expected.
Если бы я мог получить эту ошибку в вышеупомянутой Задаче, я мог бы сделать string.Replace("Oldtype","Newtype");
.
Это ошибка с десериализацией, и есть ли обходной путь?