下面代码应该可以解决问题: /// <summary>
/// 序列化为二进制字节数组
/// </summary>
/// <param name="request">要序列化的对象</param>
/// <returns>字节数组</returns>
public static byte[] SerializeBinary(object request) 
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer = 
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream memStream = new System.IO.MemoryStream();
serializer.Serialize(memStream, request);
return memStream.GetBuffer();
} /// <summary>
/// 从二进制数组反序列化得到对象
/// </summary>
/// <param name="buf">字节数组</param>
/// <returns>得到的对象</returns>
public static object DeserializeBinary(byte[] buf) 
{
System.IO.MemoryStream memStream = new MemoryStream(buf);
memStream.Position=0;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter deserializer = 
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
object newobj = deserializer.Deserialize(memStream);
memStream.Close();
return newobj;
}
private void button3_Click(object sender, System.EventArgs e)
{
Font font = new Font("宋体", 16f);
                           //序列化
byte[] data = Utility.SerializationUtil.SerializeBinary(font);                           //重新取回数据
Font font1 = (Font)Utility.SerializationUtil.DeserializeBinary(data);
MessageBox.Show(font1.FontFamily.ToString()); }