要保存的类person
namespace serializer
{
[Serializable] //必须要标记可序列化
class person
{
public int num;
public string name;
public person(int num, string name)
{
this.num = num;
this.name = name;
}
}
}
主窗体
namespace serializer
{
public partial class Form1 : Form
{
Dictionary<string, person> listp;
Dictionary<string, person> listfan;
public Form1()
{
listp = new Dictionary<string, person>();
listfan = new Dictionary<string, person>();
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listp.Add("1", new person(130, "李四"));
listp.Add("2", new person(131, "张三"));
listp.Add("3", new person(132, "王五"));
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "*.bin|*.BIN|*.*|(*.*)";
if (sfd.ShowDialog() == DialogResult.OK)
{
string name = sfd.FileName;
///序列化过程
IFormatter serializer = new BinaryFormatter();
using (FileStream fs = new FileStream(name, FileMode.Create, FileAccess.Write))
{
serializer.Serialize(fs, listp);
}
}
}
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
string name = ofd.FileName;
///反序列化过程
IFormatter serializer = new BinaryFormatter();
using (FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read))
{
listfan = serializer.Deserialize(fs) as Dictionary<string, person>;
}
}
MessageBox.Show("1"+" number:"+listfan["1"].num.ToString()+"name:"+listfan["1"].name+"\n"+"2"+" number:"+listfan["2"].num.ToString()+"name:"+listfan["2"].name+"\n"+"3"+" number:"+listfan["3"].num.ToString()+"name:"+listfan["3"].name);
}
}
}