public static T DeserializeObject <T>(string xml) { xml.AssertHasText("xml"); StringReader strReader = null; XmlSerializer serializer = null; XmlTextReader xmlReader = null; T returnObj = default(T); try { object obj = null; strReader = new StringReader(xml); serializer = new XmlSerializer(typeof(T)); xmlReader = new XmlTextReader(strReader); obj = serializer.Deserialize(xmlReader); if (obj is T) { returnObj = (T)obj; } else { returnObj = (T)Convert.ChangeType(obj, typeof(T)); } } catch (InvalidCastException) { return(returnObj); } finally { if (xmlReader.IsNotNull()) { xmlReader.Close(); } if (strReader.IsNotNull()) { strReader.Close(); } } return(returnObj); }