您的位置:首页 > 编程语言 > C#

C# 序列化与反序列化

2016-05-26 09:51 459 查看
在C#网络编程中,为了传输复杂的数据类型,如类类型和容器,例如Dictionary,List。我们需要将其转换成字节数组。

C#中提供了序列化和反序列化来实现该方式。先转换成内存流,在转换成

public static System.IO.MemoryStream SerializeBinary(object request)
        {
            System.IO.MemoryStream memStream = new System.IO.MemoryStream();
            serializer.Serialize(memStream, request);
            return memStream;
        }
        public static object DeSerializeBinary(System.IO.MemoryStream memStream)
        {
            object obj;
            obj = serializer.Deserialize(memStream);
            return obj;
        }

外层调用代码:  

public void Send_Date(object obj)
        {
            TcpClient Ts = Ret_Client();                    //获取TCP连接
            NetworkStream nws = Ts.GetStream();             //获取网络流
            System.IO.MemoryStream memStream = TypeChange.SerializeBinary(obj);
            byte[] byt = new byte[memStream.Length];
            memStream.Read(byt, 0, byt.Length);
            nws.Write(byt, 0, byt.Length);
        }
        public object Receive_Date()
        {
            TcpClient Ts = Ret_Client();
            NetworkStream nws = Ts.GetStream();
            while (nws.DataAvailable)
            {
                byte[] byt = new byte[nws.Length];              //读取数据
                nws.Read(byt, 0, byt.Length);
                memStream.Write(byt, 0, byt.Length);
            }
            return TypeChange.DeSerializeBinary(memStream);
        }


序列化对象时,需要在类定义处加上[Serializable]。

例如: [Serializable]              //序列化

        public class Film

            {}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息