WPFでクラスのインスタンスをXMLに保存してまた読み出す.

アプリの設定とかを保存する場合は, 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の方のコンストラクタでは引数付きしか用意していなかったので、
用意して対応.

 

About the author

コメントを残す