c# 自定义可序列化

 一、定义一个序列化的类(包含二进制,xml,json 三种方法)

 

    public class SerializeHelper
    {
        #region 私有的
        #region 字段
        #endregion
        #region 方法
        #endregion
        #endregion
        #region 保护的
        #region 字段

        #endregion
        #region 方法
        #endregion
        #endregion
        #region 公开的

        #region 属性

        #endregion
        #region 方法

        #endregion
        #endregion

        #region 静态方法
        #region 二进制方式
        /// <summary>
        /// 序列化对像
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="FileName"></param>123456
        /// <param name="Exception">是否显示异常消息</param>
        /// <returns></returns>
        public static bool Serialize(object obj, string FileName, bool showException)
        {
            FileInfo fi = new FileInfo(FileName);
            if (!fi.Directory.Exists) fi.Directory.Create();
            using (FileStream fileStream = new FileStream(FileName, FileMode.Create))
            {
                try
                {
                    BinaryFormatter b = new BinaryFormatter();
                    b.Serialize(fileStream, obj);
                    return true;
                }
                catch (Exception ex)
                {
                    if (showException)
                    {
                        throw new Exception(ex.Message);
                    }
                    return false;
                }
            }
        }

        /// <summary>
        /// 序列化对像
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="FileName"></param>123456
        /// <param name="Exception">是否显示异常消息</param>
        /// <returns></returns>
        public static byte[] Serialize(object obj,bool showException)
        {
            using (MemoryStream fileStream = new MemoryStream())
            {
                try
                {
                    BinaryFormatter b = new BinaryFormatter();
                    b.Serialize(fileStream, obj);
                    return fileStream.ToArray();
                }
                catch (Exception ex)
                {
                    if (showException)
                    {
                        throw new Exception(ex.Message);
                    }
                    return null;
                }
            }
        }

        /// <summary>
        /// 反序列化对像
        /// </summary>
        /// <param name="FileName"></param>
        /// <param name="showException">是否显示异常消息</param>
        /// <returns></returns>
        public static object DeSerialize(string FileName, bool showException)
        {
           return DeSerialize(FileName, showException);
        }

        /// <summary>
        /// 反序列化对像
        /// </summary>
        /// <param name="FileName"></param>
        /// <param name="showException">是否显示异常消息</param>
        /// <returns></returns>
        public static object DeSerialize(byte[] inputBuf, bool showException)
        {
            return DeSerialize<object>(inputBuf, showException);
        }

        /// <summary>
        ///  反序列化对像
        /// </summary>
        /// <typeparam name="T">返回的类型</typeparam>
        /// <param name="FileName"></param>
        /// <param name="showException">是否显示异常消息</param>
        /// <returns></returns>
        public static T DeSerialize<T>(string FileName, bool showException)
        {
            if (!System.IO.File.Exists(FileName))
            {
                if (showException) throw new Exception("文件不存");
                return default(T);
            }
            using (FileStream fileStream = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                try
                {
                    BinaryFormatter b = new BinaryFormatter();
                    b.Binder = new ObjBinderEx<T>();
                    object obj = b.Deserialize(fileStream);
                    return (T)obj;
                }
                catch (Exception ex)
                {
                    if (showException)
                    {
                        throw new Exception(ex.Message);
                    }
                    return default(T);

                }
            }
        }
        /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值