LoginSignup
7
4

More than 3 years have passed since last update.

【C#】「さっ!」とデータを保存しよう!

Last updated at Posted at 2021-04-17

初めに

プログラムでデータを保存したいことがありませんか?
ただ、あまり簡単にする方法が見つかりにくい気がします
なのでまとめます。あくまで、簡単に「さっ」と実装する方法です

本編

初めから保存するプログラムを行きましょう

プログラム

XMLClass
public static class XMLClass
{
    public static string SaveToString<T>(T control)
    {
        var writer = new StringWriter(); // 出力先のWriterを定義
        var serializer = new XmlSerializer(typeof(T));
        serializer.Serialize(writer, control);
        var xml = writer.ToString();
        Console.WriteLine(xml);
        return xml;
    }

    public static T LoadFromString<T>(string xml)
    {
        var serializer = new XmlSerializer(typeof(T));
        var deserializedBook = (T)serializer.Deserialize(new StringReader(xml));
        return deserializedBook;
    }
}

これがプログラムとなります。
これはファイルへの保存は含まれていません
なのでファイルへの読み書きは自分で実装する必要がありますが
文字列化してしまえば、ファイルへの読み書きが簡単にでき、文字列であればいろいろな場面で使えるためこのようにしました
ジェネリックで型を指定するため基本的にほとんどの型に対応しています

使い方

これはstaticのクラスなので、インスタンスなしに実行できます
サンプルプログラムを以下に示します

Sample
using System;
using System.IO;
using System.Xml.Serialization;

class Sapmle
{
    void Main()
    {
        //セーブするデータを作成
        SaveData save = new SaveData();
        save.data ="hogehoge";
        save.number = 100;

        //データをXML化
        string xml=XMLClass.SaveToString<SaveData>(save);

        //データをxmlから復元
        SaveData sdata =XMLClass.LoadFromString<T>(string s);

        //データの確認
        Console.WriteLine(sdata.data);
        Console.WriteLine(sdata.number);
    }

}
class SaveData
{
   public string data;
   public int number;
}

このように使うことができます
ファイルへはstring型のxmlの変数内に入った文字列をファイルに出力することで保存することが可能です

注意点

WPFやForm,Refrectionなど一部例外が発生し保存できないものがあるのでご注意ください
また保存させたくない場合は

[System.Xml.Serialization.XmlIgnore]

の属性を付けることで保存させないことが可能です

終わりに

かなり雑にですがC#での簡単なデータ保存の方法をまとめました、
何かご不明な点などがございましたらコメントまでお願いします。
最後までご覧いただきありがとうございました。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4