Xml序列化

1.XmlSerializer序列化
实例:
FileStream fs = null;
            try
            {
                fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
              
                XmlSerializer serializer = new XmlSerializer(obj.GetType());
                serializer.Serialize(fs, obj);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (fs != null)
                    fs.Close();
            }
2.XmlSerializer反序列化
 FileStream fs = null;
            try
            {
                // open the stream...
                fs = new FileStream(filename, FileMode.Open,      FileAccess.Read, FileShare.ReadWrite);
                XmlSerializer serializer = new XmlSerializer(type);
                return serializer.Deserialize(fs);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (fs != null)
                    fs.Close();
            }
3.序列化对象操作
public IConfigInfo LoadConfig(string configFilePath, IConfigInfo configinfo)
        {
            IConfigInfo m_configinfo =(IConfigInfo)SerializationManage.Load(configinfo.GetType(), configFilePath);  
            return m_configinfo;
        }
从以上方中可以看到,返回对象为共有的接口类型( IConfigInfo )。
方法参数分别为, configFilePath指定文件路径。 Configinfo指定要返回的对象类型。
在方法内部,使用刚刚创建的SerializationManage类中的Load方法,将参数传入就可以得到IConfigInfo对象。
public bool SaveConfig(string configFilePath, IConfigInfo configinfo)
        {
            return SerializationManage.Save(configinfo, configFilePath);
        }
以上方法完成了对象保存存为XML文件的功能,其中configFilePath为XML文件的路径, configinfo则是要保存的对象。
SerializationManage中的Save()则是用来完成俱体的保存功能的。
以上两个方法只是完成了读与写。在B/S项目中,访问对象的请求会有很多,所以我们需要将对象Lock。俱体实现时,会用到单列模式。代码:
private object lockobject = new object();
        private static ConfigFileManager instance = null;
        public static ConfigFileManager Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (lockobject)
                    {
                        instance = new ConfigFileManager();
                    }
                }
                return instance;
            }
        }
读取:
ConfigFileManager.Instance.LoadConfig(path, 实体)
保存:
ConfigFileManager.Instance.SaveConfig(path, 实体)

你可能感兴趣的:(职场,休闲,xml序列化)