最新の更新情報

 
このブログ「吟遊詩人の戯言」 の記事検索...

【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();

        }
    }
}

 
 
 
 

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">