public static CommandStack Deserialize(string XMLString) { CommandStack tr = new CommandStack(); var xe = XElement.Parse(XMLString); if (xe.Name != "CommandStack") { return(null); } int count = int.Parse((xe.Nodes().First((x) => (x as XElement).Name == "Count") as XElement).Value); foreach (var node in xe.Nodes()) { if ((node as XElement).Name == "Count") { continue; } --count; tr.Push(UndoSerializer.Deserialize((xe.Nodes().First((x) => (x as XElement).Name == "c" + count.ToString()) as XElement).FirstNode.ToString())); } return(tr); }
public XElement Serialize() { var tr = new XElement("CommandStack"); tr.Add(new XElement("Count", UndoStack.Count)); int i = 0; foreach (var undoable in UndoStack) { tr.Add(new XElement("c" + i.ToString(), UndoSerializer.Serialize(undoable))); i++; } return(tr); }