保存したいインスタンスのクラスは、次のように宣言する。
[Serializable]class TestClass { 〜略〜 }
次のような処理で保存・読込することが出来る
//保存したいクラスを宣言 TestClass data = new TestClass(); //保存 FileControl.save(data); //読込 Object obj = FileControl.load(); //キャスト if (obj == null) return; var loadData = (TestClass)obj;
static class FileControl { internal static void save(Object saveData) { //保存先を指定するダイアログを開く System.IO.Directory.CreateDirectory(@"Userdata"); SaveFileDialog sfd = new SaveFileDialog(); sfd.InitialDirectory = Directory.GetCurrentDirectory() + @"\Userdata"; sfd.FileName = "dat" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + "_" + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second; if (sfd.ShowDialog() == DialogResult.OK) { //指定したパスにファイルを保存する Stream fileStream = sfd.OpenFile(); BinaryFormatter bF = new BinaryFormatter(); bF.Serialize(fileStream, saveData); fileStream.Close(); } } internal static Object load() { //開くファイルを選択するダイアログを開く Object loadedData = null; OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = Directory.GetCurrentDirectory() + @"\Userdata"; if (ofd.ShowDialog() == DialogResult.OK) { //ファイルを読込 Stream fileStream = ofd.OpenFile(); BinaryFormatter binaryFormatter = new BinaryFormatter(); loadedData = binaryFormatter.Deserialize(fileStream); fileStream.Close(); } return loadedData; } }