c#オブジェクトのシーケンス化と逆シーケンス化


[Serializable]

        class listData

        {

            public int ID{get;set;}

            public string Name{get;set;}

        }

        public Form1()

        {

            InitializeComponent();

        }



        private void button1_Click(object sender, EventArgs e)

        {

            List<listData> list = new List<listData>();

            for (int i = 0; i < 1000; i++)

            {

                listData d = new listData();

                d.ID = i;

                d.Name = "Name" + i.ToString();

            }

            BinaryFormatter bf = new BinaryFormatter();

            MemoryStream ms = new MemoryStream();

            bf.Serialize(ms, list);

            SaveFileDialog sf = new SaveFileDialog();

            sf.ShowDialog();

            File.WriteAllBytes(sf.FileName, ms.GetBuffer());            

        }



        private void button2_Click(object sender, EventArgs e)

        {

            OpenFileDialog open = new OpenFileDialog();

            open.ShowDialog();

            BinaryFormatter bf = new BinaryFormatter();

            

            MemoryStream ms = new MemoryStream(File.ReadAllBytes(open.FileName));

            foreach (listData ld in (List<listData>)bf.Deserialize(ms))

            {

                this.listBox1.Items.Add(ld);   

            }

            listBox1.DisplayMember = "Name";

            

        }