Постоянная ошибка при десериализации - C#
Формулировка задачи:
Пишу свою игрушку. Сделал загрузку через десериализацию класса из xml. Вот код:
Да, я обернул в try-catch все. Но все равно на строке 11 вылезает ошибка System.InvalidOperationException, тк файл пустой. Помогите пожалуйста
P.s. Иногда еще при сохранение героя в xml в самом конце почемуто добавляется лишняя >, я тоже не могу понять почему
public Hero Load_Hero()
{
try
{
Hero newPerson = null;
XmlSerializer formatter = new XmlSerializer(typeof(Hero));
using (FileStream fs = new FileStream("SavedHeroes.xml", FileMode.OpenOrCreate))
{
try
{
try { newPerson = (Hero)formatter.Deserialize(fs); }
catch (System.InvalidOperationException) {
Console.WriteLine("Ошибка! Сохранение героя не найденою Создайте нового героя.");
Console.ReadLine();
Console.Clear();
return null;
}
Console.WriteLine("Объект загружен");
Console.WriteLine("Имя героя -- {0}", newPerson.Name);
Console.WriteLine();
Console.ReadLine();
Console.Clear();
return newPerson;
} catch (System.InvalidOperationException)
{
Console.WriteLine("Ошибка! Сохранение героя не найденою Создайте нового героя.");
Console.ReadLine();
Console.Clear();
return null;
}
}
}
catch (System.InvalidOperationException)
{
Console.WriteLine("Ошибка! Сохранение героя не найденою Создайте нового героя.");
Console.ReadLine();
Console.Clear();
return null;
}
}Решение задачи: «Постоянная ошибка при десериализации»
textual
Листинг программы
public Hero Load_Hero()
{
const string savePath = "SavedHeroes.xml";
Hero newPerson = null;
if (File.Exists(savePath))
{
XmlSerializer formatter = new XmlSerializer(typeof(Hero));
try
{
using (FileStream fs = new FileStream(savePath, FileMode.Open, FileAccess.Read))
{
newPerson = (Hero)formatter.Deserialize(fs);
}
}
catch
{
}
}
if (newPerson != null)
{
Console.WriteLine("Объект загружен");
Console.WriteLine("Имя героя -- {0}", newPerson.Name);
Console.WriteLine();
}
else
{
Console.WriteLine("Ошибка! Сохранение героя не найденою Создайте нового героя.");
}
Console.ReadLine();
Console.Clear();
return newPerson;
}