示例#1
0
        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();
            }
        }