序列化问题!Datatable


///


    /// 序列化DataTable
    ///

    /// 包含数据的DataTable
    /// 序列化的DataTable
    public static string GetXmlFormatDs(DataSet ds)
    {
        XmlSerializer ser = new XmlSerializer(ds.GetType());
        System.IO.MemoryStream mem = new MemoryStream();
        XmlTextWriter writer = new XmlTextWriter(mem, System.Text.Encoding.Default);
        ser.Serialize(writer, ds);
        writer.Close();
        return System.Text.Encoding.Default.GetString(mem.ToArray());
    }

    ///
    /// 反序列化DataTable
    ///

    /// 序列化的DataTable
    /// DataTable
     public static DataSet GetDsFormatXml(string ds)
    {
        XmlSerializer mySerializer = new XmlSerializer(typeof(DataSet));
        StreamReader mem = new StreamReader(new MemoryStream(System.Text.Encoding.Default.GetBytes(ds)), System.Text.Encoding.Default);
        return (DataSet)mySerializer.Deserialize(mem);
    }


    public byte[] GetBinaryFormatDataSet(DataSet ds)
    {
        //创建内存流
        MemoryStream memStream = new MemoryStream();
        //产生二进制序列化格式
        IFormatter formatter = new BinaryFormatter();
        //指定DataSet串行化格式是二进制
        ds.RemotingFormat = SerializationFormat.Binary;
        //串行化到内存中
        formatter.Serialize(memStream, ds);
        //将DataSet转化成byte[]
        byte[] binaryResult = memStream.ToArray();
        //清空和释放内存流
        memStream.Close();
        memStream.Dispose();
        return binaryResult;
    }

       ///
        /// DataSet反序列化
        ///

        /// 需要反序列化的byte[]
        ///
    public DataSet GetDataSetFromatBinary(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;
        }
    }

你可能感兴趣的:(C#,dataset,byte,string,object,null)