[C#]序列化例子

來源:互聯網
上載者:User

 

    [Serializable]
    public class SolidButton : Button, ISerializable
    {
        public SolidButton(SerializationInfo info, StreamingContext ctxt)
        {
            this.Location = new Point((int)info.GetValue("X", typeof(int)), (int)info.GetValue("Y", typeof(int)));
            this.Text = (String)info.GetValue("Text", typeof(string));
            this.Height = (int)info.GetValue("Height", typeof(int));
            this.Width = (int)info.GetValue("Width", typeof(int));
            this.Name = (String)info.GetValue("Name", typeof(string));
        }

        public SolidButton()
        {
        }

        public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("Text", this.Text);
            info.AddValue("X", this.Location.X);
            info.AddValue("Y", this.Location.Y);
            info.AddValue("Height", this.Height);
            info.AddValue("Width", this.Width);
            info.AddValue("Name", this.Name);
        }
    }

 

 

 

 

 

       /// <summary>
        /// 把對象序列化並返回相應的位元組
        /// </summary>
        /// <param name="pObj">需要序列化的對象</param>
        /// <returns>byte[]</returns>
        public byte[] ObjectToByte(object pObj)
        {
            if (pObj == null)
            {
                return null;
            }
            System.IO.MemoryStream _memory = new System.IO.MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(_memory, pObj);
            _memory.Position = 0;
            byte[] read = new byte[_memory.Length];
            _memory.Read(read, 0, read.Length);
            _memory.Close();
            return read;
        }

        /// <summary>
        /// 把對象序列化並返回相應的字串
        /// </summary>
        /// <param name="pObj">需要序列化的對象</param>
        /// <returns></returns>
        public string ObjectToString(object pObj)
        {
            return ByteToString(ObjectToByte(pObj));
        }

        /// <summary>
        /// 把位元組還原序列化成相應的對象
        /// </summary>
        /// <param name="pBytes">位元組流</param>
        /// <returns>object</returns>
        public object ByteToObject(byte[] pBytes)
        {
            object _newOjb = null;
            if (pBytes == null)
            {
                return _newOjb;
            }
            System.IO.MemoryStream _memory = new System.IO.MemoryStream(pBytes);
            _memory.Position = 0;
            BinaryFormatter formatter = new BinaryFormatter();
            _newOjb = formatter.Deserialize(_memory);
            _memory.Close();
            return _newOjb;
        }

        /// <summary>
        /// 把字串還原序列化成相應的對象
        /// </summary>
        /// <param name="pStr"></param>
        /// <returns></returns>
        public object StringToObject(string pStr)
        {
            return ByteToObject(StringToByte(pStr));
        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.