Я пытаюсь сериализовать список полигонов. Этот класс включает в себя 3 общедоступных поля: amountOfVertexes, List, где Stroke - это мой собственный класс и List, где Point - это класс C#. Неужели я не могу сериализовать его, где я ошибся? Это мой классКак сериализовать точку
[XmlRoot("CustomPolygon")]
public class CustomPolygon
{
#region Cunstructors
public CustomPolygon()
{
}
#endregion
#region Public fields
[XmlAttribute("amountOfVertexes")]
public int amountOfVertexes; // Количество сторон полигона
[XmlArray("Points")]
[XmlArrayItem("Point")]
public List<Point> listOfVertexes; // Список всех вершин
[XmlArray("Strokes")]
[XmlArrayItem("Stroke")]
public List<Stroke> listOfStrokes; // Список ребер
#endregion
#region Private fields
private PointCollection Points;
#endregion
И я добавляю те же элементы в Stroke
[XmlRoot("Stroke")]
public class Stroke
{
#region Constructors
public Stroke()
{
this.beginPoint = new Point();
this.endPoint = new Point();
}
public Stroke(Point pBegin, Point pEnd)
{
this.beginPoint = pBegin;
this.endPoint = pEnd;
}
#endregion
#region Public Member Variables
[XmlAttribute("beginPoint")]
public Point beginPoint; // Начальная точка отрезка
[XmlAttribute("endPoint")]
public Point endPoint; // Конечная точка отрезка
#endregion
}
Но я не могу добавить одни и те же элементы (я имею в виду [XmlAttribute]) к классу Point, потому что он закрыт. Что я делаю неправильно? Я пытаюсь сериализации ведьма помощи этого кода:
using (StreamWriter writer = new StreamWriter(saveFileDialogPolygon.FileName))
{
XmlSerializer xmlSerializerCustom = new XmlSerializer(typeof (List <CustomPolygon>));
xmlSerializerCustom.Serialize(writer,listOfCustomPolygons);
}
writer.Close();
И я получил «Произошла ошибка при отражательного типа» Может быть ошибка из-за точки? Итак, как я могу сериализовать (и desirialze) стандартный класс Point?
Пожалуйста, отметьте ответ, как принято. Вы можете принять свой собственный ответ, если это правильное решение проблемы. – Joel