/// <summary>
        /// Reads the geometry information from the specified <see cref="XmlReader" />.
        /// </summary>
        /// <param name="reader">The reader.</param>
        protected override void Deserialize(XmlReader reader)
        {
            var elementSystem = new CoordinateSystem();

            while (reader.Read() && reader.NodeType != XmlNodeType.EndElement)
            {
                switch (reader.Name)
                {
                case "CoordinateSystem":
                    elementSystem = CoordinateSystem.Deserialize(reader);
                    break;

                case "ReferenceProfile":
                    ReferenceProfile = FlushGapProfile.Deserialize(reader);
                    break;

                case "MeasureProfile":
                    MeasureProfile = FlushGapProfile.Deserialize(reader);
                    break;

                case "Flush":
                {
                    if (Enum.TryParse <FlushPointConnectionType>(reader.GetAttribute("ConnectionType"), out var connectionType))
                    {
                        FlushConnectionType = connectionType;
                    }

                    FlushValue = Property.ObjectToNullableDouble(reader.ReadString(), CultureInfo.InvariantCulture) ?? 0.0;

                    break;
                }

                case "Gap":
                {
                    if (Enum.TryParse <FlushPointConnectionType>(reader.GetAttribute("ConnectionType"), out var connectionType))
                    {
                        GapConnectionType = connectionType;
                    }

                    GapValue = Property.ObjectToNullableDouble(reader.ReadString(), CultureInfo.InvariantCulture) ?? 0.0;

                    break;
                }
                }
            }

            CoordinateSystem = elementSystem;
        }
예제 #2
0
        /// <inheritdoc />
        protected override bool DeserializeItem(XmlReader reader, Version version)
        {
            if (base.DeserializeItem(reader, version))
            {
                return(true);
            }

            switch (reader.Name)
            {
            case "ReferenceProfile":
                ReferenceProfile = FlushGapProfile.Deserialize(reader);
                return(true);

            case "MeasureProfile":
                MeasureProfile = FlushGapProfile.Deserialize(reader);
                return(true);

            case "Flush":
            {
                if (Enum.TryParse <FlushPointConnectionType>(reader.GetAttribute("ConnectionType"), out var connectionType))
                {
                    FlushConnectionType = connectionType;
                }

                FlushValue = Property.ObjectToNullableDouble(reader.ReadString(), CultureInfo.InvariantCulture) ?? 0.0;

                return(true);
            }

            case "Gap":
            {
                if (Enum.TryParse <FlushPointConnectionType>(reader.GetAttribute("ConnectionType"), out var connectionType))
                {
                    GapConnectionType = connectionType;
                }

                GapValue = Property.ObjectToNullableDouble(reader.ReadString(), CultureInfo.InvariantCulture) ?? 0.0;

                return(true);
            }
            }

            return(false);
        }