[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));
}