Exemplo n.º 1
0
        /// <inheritdoc />
        public void ReadXml(XmlReader reader)
        {
            Location          = CharacterLocation.FromFormatString(reader.GetAttribute(nameof(Location)));
            EndsWithDelimiter = reader.GetAttribute(nameof(EndsWithDelimiter)) == bool.TrueString;
            var pathParts = new List <KeyValuePair <string, PathType> >();

            reader.ReadStartElement();            //Path

            if (reader.Name == "Path")
            {
                reader.ReadStartElement();                //Any SubPath

                while (reader.Name != "Path" && reader.NodeType != XmlNodeType.EndElement)
                {
                    var    partName  = reader.Name;
                    string partValue = null;
                    if (reader.IsEmptyElement)
                    {
                        reader.ReadStartElement();
                    }
                    else
                    {
                        partValue = reader.ReadElementContentAsString();
                    }
                    pathParts.Add(new KeyValuePair <string, PathType>(partValue, (PathType)Enum.Parse(typeof(PathType), partName)));
                }
                reader.ReadEndElement();                //</Path>
            }
            PathParts = new Traversable(pathParts);
            if (reader.Name == "Format" && reader.NodeType == XmlNodeType.Element)
            {
                FormatterName = reader.GetAttribute(nameof(FormatterName));
                if (reader.IsEmptyElement)
                {
                    reader.ReadStartElement();
                }
                else
                {
                    reader.ReadStartElement();                     //<Argument>
                    while (reader.Name == "Argument" && reader.NodeType != XmlNodeType.EndElement)
                    {
                        var formatSubTree = reader.ReadSubtree();
                        formatSubTree.Read();

                        var expressionArgument = new ExpressionArgument();
                        Formats.Add(expressionArgument);

                        expressionArgument.ReadXml(formatSubTree);

                        reader.Skip();
                        reader.ReadEndElement();
                    }
                    reader.ReadEndElement();                    //</Format>
                }
            }
            reader.ReadEndElement();
        }
Exemplo n.º 2
0
        /// <inheritdoc />
        public void ReadXml(XmlReader reader)
        {
            Location      = CharacterLocation.FromFormatString(reader.GetAttribute(nameof(Location)));
            FormatterName = reader.GetAttribute(nameof(FormatterName));
            var pathParts = reader.GetAttribute(nameof(PathParts));

            if (pathParts != null)
            {
                PathParts = pathParts.Split(',').Select(f =>
                {
                    var parts = f.Trim('{', '}').Split(';');
                    return(new KeyValuePair <string, PathType>(parts.ElementAtOrDefault(1),
                                                               (PathType)Enum.Parse(typeof(PathType), parts[0])));
                }).ToList();
            }

            if (reader.IsEmptyElement)
            {
                return;
            }

            reader.ReadStartElement();
            while (reader.Name == "Format" && reader.NodeType != XmlNodeType.EndElement)
            {
                var formatSubTree = reader.ReadSubtree();
                formatSubTree.Read();

                var expressionArgument = new ExpressionArgument();
                Formats.Add(expressionArgument);

                expressionArgument.ReadXml(formatSubTree);

                reader.Skip();
                reader.ReadEndElement();
            }
        }
Exemplo n.º 3
0
 public ExpressionDebuggerDisplay(ExpressionArgument exp)
 {
     _exp = exp;
 }