IOException при десериализации XML - PullRequest
0 голосов
/ 15 августа 2010

Я пишу небольшое навигационное приложение для 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 - но это не помогло. Спасибо всем:)

1 Ответ

0 голосов
/ 15 августа 2010

Вы не указали фактическое исключение, но я подозреваю, что проблема в том, что ваши GeographicCoordinate.LocationOnMap_X и GeographicCoordinate.LocationOnMap_Y имеют частные установщики, вам нужно, чтобы это было публично для XmlSerialization.

...