zoukankan      html  css  js  c++  java
  • C#实现序列化和反序列化


           从我们面试准备上面,我知道了一个知识点,就是我们vs提供的序列化方法有两个,一个叫二进制序列化,一个叫做xml序列化,下面我们说一下二进制序列化的C#实现:


    反序列化:        

    public static T Desrialize<T>(T obj, string str)
            {
                try
                {
                    obj = default(T);
                    IFormatter formatter = new BinaryFormatter();
                    byte[] buffer = Convert.FromBase64String(str);
                    MemoryStream stream = new MemoryStream(buffer);
                    obj = (T)formatter.Deserialize(stream);
                    stream.Flush();
                    stream.Close();
                }
                catch (Exception ex)
                {
                    //throw new Exception("反序列化失败,原因:" + ex.Message);
                    return obj;
                }
                return obj;
            }
    



    序列化:       
     public static string Serialize<T>(T obj)
            {
                try
                {
                    IFormatter formatter = new BinaryFormatter();
                    MemoryStream stream = new MemoryStream();
                    formatter.Serialize(stream, obj);
                    stream.Position = 0;
                    byte[] buffer = new byte[stream.Length];
                    stream.Read(buffer, 0, buffer.Length);
                    stream.Flush();
                    stream.Close();
                    return Convert.ToBase64String(buffer);
                }
                catch (Exception ex)
                {
                    throw new Exception("序列化失败,原因:" + ex.Message);
                }
            }

    反序列化:
            public static T Desrialize<T>(T obj, string str)
            {
                try
                {
                    obj = default(T);
                    IFormatter formatter = new BinaryFormatter();
                    byte[] buffer = Convert.FromBase64String(str);
                    MemoryStream stream = new MemoryStream(buffer);
                    obj = (T)formatter.Deserialize(stream);
                    stream.Flush();
                    stream.Close();
                }
                catch (Exception ex)
                {
                    //throw new Exception("反序列化失败,原因:" + ex.Message);
                    return obj;
                }
                return obj;
            }



    序列化:
            public static string Serialize<T>(T obj)
            {
                try
                {
                    IFormatter formatter = new BinaryFormatter();
                    MemoryStream stream = new MemoryStream();
                    formatter.Serialize(stream, obj);
                    stream.Position = 0;
                    byte[] buffer = new byte[stream.Length];
                    stream.Read(buffer, 0, buffer.Length);
                    stream.Flush();
                    stream.Close();
                    return Convert.ToBase64String(buffer);
                }
                catch (Exception ex)
                {
                    throw new Exception("序列化失败,原因:" + ex.Message);
                }
            }
  • 相关阅读:
    K8S集群组件
    K8S概念
    yaml格式
    Linux下升级openssl
    cpu的核心数及线程关系
    bzoj4941: [Ynoi2016]镜子里的昆虫
    bzoj4940: [Ynoi2016]这是我自己的发明
    bzoj4939: [Ynoi2016]掉进兔子洞
    bzoj4867: [Ynoi2017]舌尖上的由乃
    bzoj 4866: [Ynoi2017]由乃的商场之旅
  • 原文地址:https://www.cnblogs.com/DoubleEggs/p/5747151.html
Copyright © 2011-2022 走看看