码迷,mamicode.com
首页 > Windows程序 > 详细

C#序列化和反序列化

时间:2020-04-23 15:07:28      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:ror   oid   zab   ==   byte   rri   for   pre   binary   

序列化和反序列化代码如下

  /// <summary>
    /// 将一个object对象序列化,返回一个byte[]
    /// </summary>
    public static byte[] ObjectToBytes(object obj)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);
            return ms.GetBuffer();
        }
    }

    /// <summary>
    /// 将一个序列化后的byte[] 数组还原
    /// </summary>
    public static object BytesToObject(byte[] Bytes)
    {
        using (MemoryStream ms = new MemoryStream(Bytes))
        {
            BinaryFormatter formatter = new BinaryFormatter();
            return formatter.Deserialize(ms);
        }
    }

测试代码如下

   void Start()
    {
        TestRequest request = new TestRequest(100,1, "测试", true);
        byte[] bytes = ObjectToBytes(request);

        Debug.LogError(bytes.Length);

        TestRequest testRequest = BytesToObject(bytes)  as TestRequest;
        if (testRequest == null)
        {
            Debug.LogError("反序列化对象为空");
            return;
        }
        Debug.LogError(testRequest.ToString());
    }

 

 

 

 

测试序列化基类Request,需要加[Serializable]标签

using System;


[Serializable]
public class Request
{
    public int msgType;

    public string b;

    public bool c;
    public Request()
    {

    }
    public Request(int msgType, string b,bool c)
    {
        this.msgType = msgType;
        this.b = b;
        this.c = c;
    }

    public override string ToString()
    {
        return "Request[msgType:" + msgType + "b:" + b + "    c:" + c + "]";
    }
}

  测试序列化类TestRequest,也需要加[Serializable]标签

using System;


[Serializable]
public class TestRequest : Request
{
    public int testNum;
    public TestRequest(int testNum, int msgType,string b,bool c):base(msgType,b,c)
    {
        this.testNum = testNum;
    }

    public override string ToString()
    {
        return "TestRequest[TestNum:"+testNum+" msgType:" + msgType + " b:" + b + "    c:" + c + "]";
    }
}

C#序列化和反序列化

标签:ror   oid   zab   ==   byte   rri   for   pre   binary   

原文地址:https://www.cnblogs.com/xiaobao2017/p/12760762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!