这是我的第一个序列化程序。
尝试序列化按钮控件时出错。
public Form1()
{
InitializeComponent();
CheckSerialization();
Button btn = btnSerialized;
}
public void CheckSerialization()
{
Stream write = File.OpenWrite(@"C:\ser.bin");
BinaryFormatter serial = new BinaryFormatter();
serial.Serialize(write, btnSerialized);
write.Close();
}
private void btnSerialized_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream(@"C:\ser.bin",FileMode.Open);
BinaryFormatter bf= new BinaryFormatter();
object obj = bf.Deserialize(fs);
Button button12 = (Button)obj;
button1 = button12;
button1.Location = new Point(0, 0);
}
程序集"System.Windows.Forms,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089“中的类型”System. Windows.Forms.Button“未标记为可序列化。**
如何将此对象标记为可序列化?
4条答案
按热度按时间e4yzc0pl1#
必须将类型标记为可序列化,而不是对象。
pokxtpni2#
找到看起来像
public partial class Form1 : Form
的线。在它的正上方,放置[Serializable]
。将类标记为序列化。但是,您需要控制自己的序列化,因为如下所述,UI对象不会序列化。查看ISerializable接口。关于SerializableAttribute的更多信息是here。
jecbmhm33#
你不能序列化Winforms对象(或者其他UI对象,一般来说)
zfciruhq4#
如果你试图导出对象或重新加载对象,用户提供的动态属性值,那么你为什么不使用
System.Reflection
?这里:http://www.codeproject.com/Tips/715891/Compiling-Csharp-Code-at-Runtime