Конструктор по умолчанию необходим для
Конструктор по умолчанию необходим для десериализации объектов.
public class GeomPoint: GeomFigure { private double xField, yField;
[XmlAttribute("X")] public double X { get {return xField;} set {xField = value;} }
[XmlAttribute("Y")] public double Y { get {return yField;} set {yField = value;} }
public GeomPoint() { }
public GeomPoint(double x, double y) { this.X = x; this.Y = y; }
public override string ToString() { return String.Format("({0}, {1})", X, Y); } }
public class GeomLine: GeomFigure { private GeomPoint aField, bField;
public GeomPoint A { get {return aField;} set {aField = value;} }
public GeomPoint B { get {return bField;} set {bField = value;} }
public GeomLine() { }
public GeomLine(GeomPoint a, GeomPoint b) { this.A = a; this.B = b; }
public override string ToString() { return String.Format("{0} {1}", A, B); } }
Листинг 4.1.
В списке фигур используются атрибуты XmlArrayItem для описания всех возможных типов фигур.
public class GeomFigures { private List<GeomFigure> figuresField;
[XmlArrayItem("Point", typeof(GeomPoint)), XmlArrayItem("Line", typeof(GeomLine))] public List<GeomFigure> Figures { get { return figuresField;} }
public GeomFigures() { figuresField = new List<GeomFigure>(); } }
public class App { public static void Main() { GeomFigures figures = new GeomFigures();
figures.Figures.Add(new GeomPoint(2, -1)); figures.Figures.Add(new GeomLine(new GeomPoint(-1, -1), new GeomPoint(2, 2)));
XmlSerializer serializer = new XmlSerializer(typeof(GeomFigures)); using (StreamWriter writer = new StreamWriter("figures.xml")) { serializer.Serialize(writer, figures); }; } }
Листинг 4.2.
В результате выполнения этого примера будет создан следующий XML-файл.
<?xml version="1.0" encoding="utf-8"?> <GeomFigures xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Figures> <Point X="2" Y="-1" /> <Line> <A X="-1" Y="-1" /> <B X="2" Y="2" /> </Line> </Figures> </GeomFigures>
Важное применение атрибутов заключается в том, что они позволяют описать соответствие класса XSD-схеме получаемого в ходе сериализации документа.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий