Я пишу небольшое навигационное приложение для Windows Mobile 6.1 (.NET CF 3.5) и получаю IOException, когда пытаюсь десериализовать свои данные из файлового потока, и я не могу понять, почему.
вот мой код:
//That's the class I am trying to serialize / deserialize
public class MapData
{
[XmlIgnore]
public Bitmap EntireMapBitmap { get; set; }
public string Date { get; set; }
public string FileName { get; set; }
public Route NavigationRoute { get; set; }
//and some other unrelavant fields...
}
вот код для сериализации:
string fileNameWithExtension = /*some calculation to get the full path*/
XmlSerializer serializer = new XmlSerializer(typeof(MapData));
TextWriter textWriter = new StreamWriter(fileNameWithExtension);
serializer.Serialize(textWriter, mapData);
textWriter.Close();
вот код для десериализации:
string fullPath = /*Retreive file's full path logic - working OK */;
XmlSerializer deserializer = new XmlSerializer(typeof(MapData));
FileStream fs = new FileStream(fullPath, FileMode.Open);
mapData = null;
mapData = (MapData)deserializer.Deserialize(fs);
fs.Close();
Я знаю, что это много деталей, но из моего опроса Исключение возникает только тогда, когда я использую его с помощью NavigationRoute poroperty, поэтому я добавлю и эти связанные классы ...
public class Route
{
public List<GeographicCoordinate> Coordinates { get; set; }
public Route()
{
Coordinates = new List<GeographicCoordinate>();
}
}
public class GeographicCoordinate
{
public int LocationOnMap_X { get; private set; }
public int LocationOnMap_Y { get; private set; }
public GeographicCoordinate(Point onMap)
{
LocationOnMap_X = onMap.X;
LocationOnMap_Y = onMap.Y;
}
}
Как я упоминал ранее, это только после того, как я добавляю один или несколько объектов в список координат Маршрута - я получаю исключение (что делает его еще более неловким для меня ...). Еще одна вещь, которую я пытался сделать, чтобы удалить частные сеттеры из класса GeographicCoordinate - но это не помогло.
Спасибо всем:)