private static PersistValue ReadPersistValue(XmlReader xr) { Type type; PersistValue pv = null; string name = xr.Name; if (PersistValueDictionary.TryGetValue(name, out type)) { pv = (PersistValue)type.GetConstructor(new Type[0]).Invoke(null); XElement element = (XElement)XNode.ReadFrom(xr); pv.Read(element, name); } else { XNode.ReadFrom(xr); } return(pv); }
public static void ReadFromFile() { try { XmlReaderSettings settings = new XmlReaderSettings() { IgnoreWhitespace = true }; using (XmlReader xr = XmlReader.Create(StorageFileName, settings)) { xr.MoveToContent(); xr.ReadStartElement("Configuration"); Dictionary <string, PersistValue> newStorage = new Dictionary <string, PersistValue>(); while (xr.NodeType == XmlNodeType.Element) { xr.ReadStartElement("Item"); string key = xr.ReadElementContentAsString("Key", ""); PersistValue pvalue = ReadPersistValue(xr); newStorage.Add(key, pvalue); xr.ReadEndElement(); } xr.ReadEndElement(); Storage = newStorage; } } catch {} }