• 序列化


       #region 序列化
    
            /// <summary>
            /// 二进制的方式序列化DataTable
            /// </summary>
            /// <param name="o">需要转换的对象</param>
            /// <returns>二进制数组</returns>
            private static byte[] GetBinaryFormatDataTable(DataTable dt)
            {
                MemoryStream memory = new MemoryStream();//使用内存流来存这些byte[] 
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(memory, dt);
                byte[] buff = memory.GetBuffer(); //这里就可你想要的byte[],可以使用它来传输 
                memory.Close();
                memory.Dispose();
                return buff;
            }
            /// <summary>
            /// 反序列化byteDataTable
            /// </summary>
            /// <param name="bt">二进制数据</param>
            /// <returns>DataTable</returns>
            private static DataTable RetrieveDataTable(byte[] bt)
            {
                MemoryStream memory = new MemoryStream();//使用内存流来存这些byte[] 
                BinaryFormatter formatter = new BinaryFormatter();
                return (DataTable)formatter.Deserialize(new MemoryStream(bt)); //byte[]转回的datatable 
            }
    
            /// <summary>
            /// DataSet序列化
            /// </summary>
            /// <param name="ds">需要序列化的DataSet</param>
            /// <returns></returns>
            private static byte[] GetBinaryFormatDataSet(DataSet ds)
            {
    
                MemoryStream memStream = new MemoryStream();   //创建内存流
    
                IFormatter formatter = new BinaryFormatter();//产生二进制序列化格式
    
                ds.RemotingFormat = SerializationFormat.Binary;//指定DataSet串行化格式是二进制
    
                formatter.Serialize(memStream, ds);//串行化到内存中
    
                byte[] binaryResult = memStream.ToArray();//将DataSet转化成byte[]
    
                memStream.Close();//清空和释放内存流
                memStream.Dispose();
                return binaryResult;
            }
            /// <summary>
            /// DataSet反序列化
            /// </summary>
            /// <param name="binaryData">需要反序列化的byte[]</param>
            /// <returns></returns>
            private static DataSet RetrieveDataSet(byte[] binaryData)
            {
    
                MemoryStream memStream = new MemoryStream(binaryData);//创建内存流
    
                IFormatter formatter = new BinaryFormatter();//产生二进制序列化格式
    
                object obj = formatter.Deserialize(memStream);//反串行化到内存中
                //类型检验
                if (obj is DataSet)
                {
                    DataSet dataSetResult = (DataSet)obj;
                    return dataSetResult;
                }
                else
                {
                    return null;
                }
            }
    
            #endregion 序列化
    
    
    那些个风花雪月的日子 那些铺满星辰的大地 那个被代码包裹的我
  • 相关阅读:
    spring cloud项目引入 Eureka注册中心
    Git常见问题及解决方案
    docker搭建Lepus(天兔),数据库监控系统
    C#WinForm中支持透明的TextBox控件
    【DB宝40】MySQL高可用管理工具Orchestrator简介及测试
    数据库主从同步实践
    C#使用开源类库解析和生成rtf格式的内容
    C#总结(七)动态加载C++动态链接库
    CTO(技术总监)平时都在做些什么?
    编程范式:命令式编程(Imperative)、声明式编程(Declarative)和函数式编程(Functional)
  • 原文地址:https://www.cnblogs.com/jigong/p/1744461.html
Copyright © 2020-2023  润新知