【C#】オブジェクトのシリアル化 ジェネリックリストもOK!

いつもお世話になっている,どぼん.net
ジェネリックのList<>オブジェクトのシリアル化をやる必要が出てきたんで,
また,お伺いしてみたら...

参考例がなかったり(汗
ArrayListバージョンはあったんですが...

ジェネリックリストは,使えんじゃろか?
ってなったんで,サンプルを起して,テストしてみました

結果はOK!

ちゃんとXMLに書き出してくれますし
読み込んでもくれますです

せっかく作ったサンプル,ここに掲載しておきます
参考にしてくださいませ

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication4
{
    public partial class Form1 : Form
    {
        private const string FILENAME = @"X:\test.xml";
        //保存内容の保持クラス(親)
        public class classFloor
        {
            public int        RoomNo;
            public string     RoomName;
            public List<classPerson> PersonList = new List<classPerson>();
        }

        //保存内容の保持クラス(子)
        public class classPerson
        {
            public string     Name;
            public int        Age;
            public float      Height;
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            classFloor room = new classFloor();
            room.RoomName = "きく組";
            room.RoomNo = 201;

            classPerson obj = new classPerson();
            obj.Name = "国仲 涼子";
            obj.Age = 29;
            obj.Height = 157.5f;

            room.PersonList.Add(obj);
            obj = new classPerson();
            obj.Name = "堀北 真希";
            obj.Age = 20;
            obj.Height = 160.2f;

            room.PersonList.Add(obj);
            System.Xml.Serialization.XmlSerializer serializer = new 
                System.Xml.Serialization.XmlSerializer(typeof(classFloor));
            System.IO.FileStream fs = new System.IO.FileStream(FILENAME, System.IO.FileMode.Create);
            serializer.Serialize(fs, room);
            fs.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {

            System.Xml.Serialization.XmlSerializer serializer =    new 
                System.Xml.Serialization.XmlSerializer(    typeof(classFloor));
            System.IO.FileStream fs = new System.IO.FileStream(FILENAME, System.IO.FileMode.Open);
            classFloor cls = (classFloor) serializer.Deserialize(fs);
            fs.Close();

        }
    }
}

1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください