public static void LoadFromFile <T>(string root, string path, out T deserializedObject) { if (string.IsNullOrEmpty(path)) { throw new ArgumentNullException("path"); } XmlRootAttribute xmlRoot = new XmlRootAttribute { ElementName = root }; XmlSerializer serializer = new XmlSerializer(typeof(T), xmlRoot); try { using (StreamReader reader = new StreamReader(path)) { XmlReaderSettings xmlReaderSettings = new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true }; using (XmlReader xmlReader = XmlReader.Create(reader, xmlReaderSettings)) { deserializedObject = (T)serializer.Deserialize(xmlReader); } } } catch (System.Exception) { throw; } IXmlSerializable xmlSerializableObject = deserializedObject as IXmlSerializable; if (xmlSerializableObject != null) { xmlSerializableObject.OnDeserializationComplete(); } }