2016年10月25日火曜日

C#のXmlSerializer

XmlSerializerを使うにはSystem.Xml.Serializationの名前空間が必用。あとファイルに保存したりするのでSystem.IOも必用。
XmlSerializerは完全にpublicなclassしか使えない点に注意。例えばprivateクラスの中にあるpublicクラス等も使用できない。
前回書いたとおりFontとかColorもSerializeできない。FontConverterとかColorConverterとかを使う必要がある。その際はConvertToStringとかConvertFromStringを使う。

その他Serialize周りでは色々例外が投げられたりする場合もあるので適切に処理するように。


public static void Save(string Path, ClassName SaveData)
{
    XmlSerializer serializer = new XmlSerializer(typeof(ClassName));

    using (StreamWriter sw = new StreamWriter(Path, false, Encoding.UTF8))
    {
        serializer.Serialize(sw, SaveData);
    }
}

public void Save(string Path)
{
    Save(Path, this);
}

public static ClassName Load(string Path)
{
    ClassName LoadData = null;

    if (File.Exists(Path))
    {
        XmlSerializer serializer = new XmlSerializer(typeof(ClassName));

        using (StreamReader sr = new StreamReader(Path, Encoding.UTF8))
        {
            LoadData = serializer.Deserialize(sr) as ClassName;
        }
    }

    return (LoadData != null ? LoadData : new ClassName());
}

0 件のコメント:

コメントを投稿