예제 #1
0
        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);
        }
예제 #2
0
 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 {}
 }