Enterra.V8x1C.DOM.Session.LoadObjectsCache C# (CSharp) Method

LoadObjectsCache() public method

Load objects cache
public LoadObjectsCache ( IEnumerable sessionObjects ) : void
sessionObjects IEnumerable
return void
        public void LoadObjectsCache(IEnumerable<BaseSessionObject> sessionObjects)
        {
            var enmrtr = sessionObjects.GetEnumerator();

            XMLWriter xmlWriter = null;
            List<BaseSessionObject> xmlLoadedObjects = null;


            while (enmrtr.MoveNext())
            {
                var sessionObject = enmrtr.Current;

                CheckSession(sessionObject);

                if (sessionObject is IV8XmlSerializable)
                {
                    if (xmlWriter == null)
                    {
                        xmlWriter = new XMLWriter(this);
                        xmlWriter.SetString();
                        xmlLoadedObjects = new List<BaseSessionObject>();
                    }

                    WriteXML(xmlWriter, sessionObject);
                    xmlLoadedObjects.Add(sessionObject);
                }
                else if (sessionObject is IV8Serializable)
                {
                    string str = ValueToStringInternal(sessionObject.Ptr);
                    (sessionObject as IV8Serializable).LoadFromV8String(str);
                }
            }

            if (xmlWriter != null)
            {
                string xml = xmlWriter.Close();

                XmlDocument doc = new XmlDocument();
                var root = doc.CreateElement("root");
                root.InnerXml = xml;

                int objectId = 0;
                foreach (var node in root.ChildNodes)
                {
                    if (!(node is XmlElement))
                    {
                        continue;
                    }

                    XmlElement objectTag = (XmlElement) node;
                    BaseSessionObject v8Object = xmlLoadedObjects[objectId++];

                    (v8Object as IV8XmlSerializable).LoadFromV8Xml(objectTag);
                }
            }
        }

Usage Example

Beispiel #1
0
 /// <summary>
 /// Load cache
 /// </summary>
 public void LoadCache()
 {
     Session.LoadObjectsCache(new BaseSessionObject[] { this });
 }