コード例 #1
0
        public QXStarGraphSerializer()
            : base()
        {
            QXVertexSerializer centerVertexSerializer = new QXVertexSerializer("CenterVertex");

            centerVertexSerializer.PositionProcessingMode = QXProcessingMode.Ignore;

            this.RegisterXmlElement(centerVertexSerializer, sg => sg.CenterVertex, (sg, cv) => { });
            this.SetChildInstanceOverride("CenterVertex", sg => sg.CenterVertex);
            this.MoveXmlElementToTop("CenterVertex");
        }
コード例 #2
0
        public QXLayerSerializer(QXVertexSerializer vertexSerializer, QXEdgeSerializer edgeSerializer)
        {
            this.RegisterXmlAttribute("ID", l => l.LayerID, (l, s) => l.LayerID = s);
            this.SetAttributeProcessingMode("ID", QXProcessingMode.IgnoreIfEmpty);

            this.RegisterXmlAttribute("VertexEnumType",
                                      l => l.VertexEnumerationType.ToString(),
                                      (l, s) => l.VertexEnumerationType = (QGVertexEnumerationType)Enum.Parse(typeof(QGVertexEnumerationType), s));
            this.SetAttributeProcessingMode("VertexEnumType", QXProcessingMode.IgnoreIfEmpty);

            this.VertexSerializer = vertexSerializer;
            this.EdgeSerializer   = edgeSerializer;

            this.RegisterXmlEnclosedElementList("Vertices", this.VertexSerializer,
                                                l => l.ChildControls.OfType <IQGVertex>(),
                                                (l, v) => l.ChildControls.Add((IQGVertex)v));

            this.RegisterXmlEnclosedElementList("Edges", this.EdgeSerializer,
                                                l => l.ChildControls.OfType <QGEdge>().Select(
                                                    e => new QGXmlEdgeInfo(QXVertexSerializer.VertexToIndexDictionary[e.Vertex1], QXVertexSerializer.VertexToIndexDictionary[e.Vertex2])),
                                                (l, ei) => QXEdgeSerializer.LoadedEdges.Add((QGXmlEdgeInfo)ei));
        }