アプリの設定とかを保存する場合は, Application Settingsの形で大方は済むはずだけど(Propertiesとかで読み書きできるのは楽)、
簡単に何らかのインスタンスを保存する方法がXMLによる方法.
ABCのクラスのabcなるインスタンスを保存するものとすると
保存
XmlSerializer serializer = new XmlSerializer(typeof(ABC));
FileStream fs = new FileStream(“C:¥test.xml”, FileMode.Create);
serializer.Serialize(fs, abc);
fs.Close();
読み出し
XmlSerializer serializer = new XmlSerializer(typeof(ABC));
FileStream fs = new FileStream(“C:¥test.xml”, FileMode.Open);
abc = (ABC)serializer.Deserialize(fs);
fs.Close();
簡単.
だけど、Assertが出ることがある.
「スタティックに使用できない型を指定するには XmlInclude または SoapInclude 属性を使ってください。」
みたいなの.
最終的に以下の作業が必要だった.
クラスABCを継承した子供のクラスをXYZとして、XYZのXMLに書き出す場合.
[XmlInclude(typeof(XYZ))]
[Serializable]
public class ABC
の対応と
[Serializable]
public class XYZ
の対応
他に引数のないコンストラクタの用意する必要がある.
XYZの方のコンストラクタでは引数付きしか用意していなかったので、
用意して対応.