/// <summary> /// This method deserialize xml data to object. Use this method when you don't know the type yet. /// </summary> /// <param name="item"></param> /// <returns></returns> static internal object ObjectFromXml(XElement item) { if (item == null || item.Value == "") { return(null); } Object value = ""; // Obtain CrmType. I haven't cover all types yet. string CrmType = item.Attribute(Util.ns.i + "type").Value.Substring(2); switch (CrmType) { case "long": value = Util.LoadFromXml <long>(item); break; case "decimal": value = Util.LoadFromXml <decimal>(item); break; case "string": value = item.Value; break; case "base64Binary": value = Convert.FromBase64String(item.Value); break; case "int": value = Util.LoadFromXml <int>(item); break; case "double": value = Util.LoadFromXml <double>(item); break; case "dateTime": value = Util.LoadFromXml <DateTime>(item); break; case "guid": value = Util.LoadFromXml <Guid>(item); break; case "boolean": value = Util.LoadFromXml <bool>(item); break; case "EntityReference": value = EntityReference.LoadFromXml(item); break; case "AliasedValue": value = AliasedValue.LoadFromXml(item); break; case "OptionSetValue": value = OptionSetValue.LoadFromXml(item); break; case "Money": value = Money.LoadFromXml(item); break; case "EntityCollection": value = EntityCollection.LoadFromXml(item); break; default: break; } return(value); }