/// <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(); }
/// <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(); } }
public ExpressionDebuggerDisplay(ExpressionArgument exp) { _exp = exp; }