private static void GetXmlFactory()

in Darabonba/Utils/XmlUtils.cs [281:327]


        private static void GetXmlFactory(object obj, XElement element, XElement xParent = null)
        {
            if (obj == null)
            {
                return;
            }
            Type type = obj.GetType();

            if (typeof(IList).IsAssignableFrom(type))
            {
                if (xParent == null)
                {
                    throw new ArgumentException("unsupported nest list.");
                }
                IList list = (IList)obj;
                string nodeName = element.Name.LocalName;
                for (int j = 0; j < list.Count; j++)
                {
                    XElement xNode = new XElement(nodeName);
                    GetXmlFactory(list[j], xNode);
                    xParent.Add(xNode);
                }
                return;
            }

            if (typeof(Model).IsAssignableFrom(type))
            {
                GetXml((Model)obj, element);

            }
            else if (typeof(IDictionary).IsAssignableFrom(type))
            {
                Dictionary<string, object> newDict = CastDict((IDictionary)obj)
                    .ToDictionary(entry => (string)entry.Key, entry => entry.Value);
                GetXml(newDict, element);
            }
            else
            {
                element.Add(obj);
            }

            if (xParent != null)
            {
                xParent.Add(element);
            }

        }