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);
}
}
}