private static List <T> ListFromXml <T>(XmlNode listRootNode) where T : new() { List <T> list = new List <T>(); try { bool flag = typeof(Def).IsAssignableFrom(typeof(T)); foreach (XmlNode xmlNode in listRootNode.ChildNodes) { if (DirectXmlToObject.ValidateListNode(xmlNode, listRootNode, typeof(T))) { if (flag) { DirectXmlCrossRefLoader.RegisterListWantsCrossRef <T>(list, xmlNode.InnerText); } else { list.Add(DirectXmlToObject.ObjectFromXml <T>(xmlNode, true)); } } } } catch (Exception ex) { Log.Error(string.Concat(new object[] { "Exception loading list from XML: ", ex, "\nXML:\n", listRootNode.OuterXml })); } return(list); }
private static List <T> ListFromXml <T>(XmlNode listRootNode) where T : new() { List <T> list = new List <T>(); try { bool flag = typeof(Def).IsAssignableFrom(typeof(T)); IEnumerator enumerator = listRootNode.ChildNodes.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; XmlNode xmlNode = (XmlNode)obj; if (DirectXmlToObject.ValidateListNode(xmlNode, listRootNode, typeof(T))) { if (flag) { DirectXmlCrossRefLoader.RegisterListWantsCrossRef <T>(list, xmlNode.InnerText, listRootNode.Name); } else { list.Add(DirectXmlToObject.ObjectFromXml <T>(xmlNode, true)); } } } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } } catch (Exception ex) { Log.Error(string.Concat(new object[] { "Exception loading list from XML: ", ex, "\nXML:\n", listRootNode.OuterXml }), false); } return(list); }
private static Dictionary <K, V> DictionaryFromXml <K, V>(XmlNode dictRootNode) where K : new() where V : new() { Dictionary <K, V> dictionary = new Dictionary <K, V>(); try { bool flag = typeof(Def).IsAssignableFrom(typeof(K)); bool flag2 = typeof(Def).IsAssignableFrom(typeof(V)); if (!flag && !flag2) { foreach (XmlNode xmlNode in dictRootNode.ChildNodes) { if (DirectXmlToObject.ValidateListNode(xmlNode, dictRootNode, typeof(KeyValuePair <K, V>))) { K key = DirectXmlToObject.ObjectFromXml <K>(xmlNode["key"], true); V value = DirectXmlToObject.ObjectFromXml <V>(xmlNode["value"], true); dictionary.Add(key, value); } } } else { foreach (XmlNode xmlNode2 in dictRootNode.ChildNodes) { if (DirectXmlToObject.ValidateListNode(xmlNode2, dictRootNode, typeof(KeyValuePair <K, V>))) { DirectXmlCrossRefLoader.RegisterDictionaryWantsCrossRef <K, V>(dictionary, xmlNode2); } } } } catch (Exception ex) { Log.Error(string.Concat(new object[] { "Malformed dictionary XML. Node: ", dictRootNode.OuterXml, ".\n\nException: ", ex })); } return(dictionary); }
private static Dictionary <K, V> DictionaryFromXml <K, V>(XmlNode dictRootNode) where K : new() where V : new() { Dictionary <K, V> dictionary = new Dictionary <K, V>(); try { bool flag = typeof(Def).IsAssignableFrom(typeof(K)); bool flag2 = typeof(Def).IsAssignableFrom(typeof(V)); if (!flag && !flag2) { IEnumerator enumerator = dictRootNode.ChildNodes.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; XmlNode xmlNode = (XmlNode)obj; if (DirectXmlToObject.ValidateListNode(xmlNode, dictRootNode, typeof(KeyValuePair <K, V>))) { K key = DirectXmlToObject.ObjectFromXml <K>(xmlNode["key"], true); V value = DirectXmlToObject.ObjectFromXml <V>(xmlNode["value"], true); dictionary.Add(key, value); } } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } } else { IEnumerator enumerator2 = dictRootNode.ChildNodes.GetEnumerator(); try { while (enumerator2.MoveNext()) { object obj2 = enumerator2.Current; XmlNode xmlNode2 = (XmlNode)obj2; if (DirectXmlToObject.ValidateListNode(xmlNode2, dictRootNode, typeof(KeyValuePair <K, V>))) { DirectXmlCrossRefLoader.RegisterDictionaryWantsCrossRef <K, V>(dictionary, xmlNode2, dictRootNode.Name); } } } finally { IDisposable disposable2; if ((disposable2 = (enumerator2 as IDisposable)) != null) { disposable2.Dispose(); } } } } catch (Exception ex) { Log.Error(string.Concat(new object[] { "Malformed dictionary XML. Node: ", dictRootNode.OuterXml, ".\n\nException: ", ex }), false); } return(dictionary); }