public virtual IXmlable FromXml(XmlElement xmlEle) { if (Object.ReferenceEquals(null, xmlEle)) { return(null); } ConstructorInfo constructInfo = null; bool isUnique = false; if (!_xmlFormater.GetXmlTypeInfo(xmlEle.Name, out constructInfo, out isUnique)) { System.Diagnostics.Debug.Assert(false, "could not find the Type of tag name " + xmlEle.Name); return(null); } if (!Object.ReferenceEquals(null, constructInfo)) { IXmlable objXmlable = null; if (isUnique) { String strId = xmlEle.GetAttribute(_xmlIdAttr); if (!String.IsNullOrEmpty(strId)) { if (!_xmlIdToObj.TryGetValue(strId, out objXmlable)) { objXmlable = constructInfo.Invoke(_emptyArgument) as IXmlable; _objToXmlId.Add(objXmlable, strId); _xmlIdToObj.Add(strId, objXmlable); } System.Diagnostics.Debug.Assert(null != objXmlable); objXmlable.FromXml(xmlEle, this); return(objXmlable); } } if (null == objXmlable) { objXmlable = constructInfo.Invoke(_emptyArgument) as IXmlable; } objXmlable.FromXml(xmlEle, this); return(objXmlable); } System.Diagnostics.Debug.Assert(false, "could not load " + xmlEle.Name); return(null); }