作者: xiaobo
查看: 2637|回复: 9
打印 上一主题 下一主题

[教程] 【序列化助手】文件序列化助手SerializeHelper

[复制链接]
跳转到指定楼层
楼主
xiaobo 发表于 2014-8-12 22:17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查看: 2637|回复: 9
随便写的,主代码:
[C#] 纯文本查看 复制代码
public class SerializeHelper<T>
    {
        /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="obj">要进行序列化的对象</param>
        /// <param name="fileName">保存路径</param>
        public void SerializeNow(T obj, string fileName)
        {
            var fileStream = new FileStream(fileName, FileMode.Create);
            var b = new BinaryFormatter();
            b.Serialize(fileStream, obj);
            fileStream.Close();
        }


        /// <summary>
        /// 反序列化
        /// </summary>
        /// <param name="fileName">要进行反序列化的文件</param>
        /// <returns>结果</returns>
        public T DeSerializeNow(string fileName)
        {
            FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
            BinaryFormatter b = new BinaryFormatter();
            var obj = b.Deserialize(fileStream);
            fileStream.Close();

            T result = default(T);
            if (obj is T)
            {
                result = (T)obj;
            }
            return result;
        }
    }


使用方法:
[C#] 纯文本查看 复制代码
//序列化
var serialize = new SerializeHelper<SettingModel>();
var setting = new SettingModel();
setting.SqlString = txtSqlIP.Text;
setting.SqlUser = txtSqlUser.Text;
setting.SqlPassword = txtSqlPassword.Text;
setting.SqlDbName = txtSqlDbName.Text;
setting.SqlPort = txtSqlPort.Text;
setting.VersionStopMsg = txtVersionStopMsg.Text;

serialize.SerializeNow(setting, "Setting.dat");

//反序列化
var SettingModel = new Setting.SettingModel();
SettingModel = serialize.DeSerializeNow("Setting.dat");


评分

参与人数 1金钱 +1 收起 理由
乔克斯 + 1 感谢分享,LZ辛苦了~

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 转播转播
回复 论坛版权

使用道具 举报

沙发
乔克斯 发表于 2014-8-13 11:25:16 | 只看该作者
谢谢海棠受分享>A<
板凳
 楼主| xiaobo 发表于 2014-8-13 14:48:30 | 只看该作者
乔克斯 发表于 2014-8-13 11:25
谢谢海棠受分享>A

写程序的时候用到的,新鲜出炉,顺手就发出来了
地板
ppszxc 发表于 2015-4-21 17:57:13 | 只看该作者
SettingModel定义不给代码引用会报错的。
5#
 楼主| xiaobo 发表于 2015-4-21 19:47:47 | 只看该作者
ppszxc 发表于 2015-4-21 17:57
SettingModel定义不给代码引用会报错的。

T类型(泛型),随意传递,不是必须要SettingModel这个类.
自定义一个就行了
6#
王者VIP 发表于 2015-5-21 09:52:18 | 只看该作者
支持,顺便学习
7#
coolhq 发表于 2018-12-16 14:09:59 | 只看该作者
多谢分享
回复

使用道具 举报

8#
jacksonwong 发表于 2019-5-25 12:08:06 | 只看该作者
多谢分享!
回复

使用道具 举报

9#
ysuwhai 发表于 2019-5-30 16:25:05 | 只看该作者
很好,学习了。谢谢。
10#
Sxxjava 发表于 2019-6-8 22:21:55 | 只看该作者
谢谢海棠受分享>A
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-4-25 18:45, Processed in 0.577095 second(s), 31 queries , Gzip On.

快速回复 返回顶部 返回列表