黑马程序员技术交流社区

标题: 谈谈C#反射和序列化 [打印本页]

作者: 许庭洲    时间: 2012-7-5 16:06
标题: 谈谈C#反射和序列化
请高手指点,谈谈反射和序列化,反射和序列化在C#的具体意思和作用。
作者: 肖琦    时间: 2012-7-6 08:56
反射我也不懂,序列化略知一点.....

比如你玩某些游戏时,由于某种原因退出,但再重新进入游戏时,还是接着你刚刚退出前的;
这里面就用到了序列化和反序列化,序列化是将对象当前所有数据保存到本地磁盘,反序列化就是将本地磁盘的文件的数据加载到程序运行中对应的对象中;

序列化和反序列化操作:
   对于你需要保存的对象的类,在类开头做可序列化标记[Serializable](记住只要是要保存的都要做,父子类都要单独做);
给你一个序列化操作的类吧,就两个方法,你参考参考:
class FileOP
    {
        //文件保存的路径
        private string path;

        public FileOP(string path)
        {
            this.path = path;
        }
        /// <summary>
        /// 反序列化操作
        /// </summary>
        /// <returns>返回值为 object</returns>
        public Object LoadInfo()
        {
            FileStream fs = null;
            try
            {
                fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None);
                return new BinaryFormatter().Deserialize(fs);
            }
            finally
            {
                if(fs!=null) fs.Close();
            }
        }
        /// <summary>
        /// 序列化操作
        /// </summary>
        /// <returns>返回值为 object</returns>
        public void SaveInfo(Object obj)
        {
            FileStream fs = null;
            try
            {
                fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
                new BinaryFormatter().Serialize(fs, obj);
            }
            finally
            {
                if (fs != null) fs.Close();
            }
        }
    }

希望对你有所帮助
作者: 许庭洲    时间: 2012-7-6 08:57
肖琦 发表于 2012-7-6 08:56
反射我也不懂,序列化略知一点.....

比如你玩某些游戏时,由于某种原因退出,但再重新进入游戏时,还是接 ...

太棒了,谢谢!
作者: 朱灿    时间: 2012-7-6 09:23
c#中反射,实际上就是动态使用类库,可以通过名称来引用类及其成员。
序列化基本是指把一个对象保存到文件或流中,
可以把文件序列化以保存到Xml中,或一个磁盘文件中。
作者: 红叶杉杉    时间: 2012-7-6 12:30
正在学习序列化过程中,上面这个有帮助!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2