C# ファイル保存にハマった……orz

プログラムのC#のお話。自分メモみたいな感じなので、大半の方は無視してくださいw
昨日からXmlSerializerを使ったファイル保存が上手くいかず、悩んでおりました。


ハマった場所その1、上手く保存できない。
手順はあってるはずなのに、XMLのヘッダーだけ付いて何も保存されなかったんです。
原因は、保存したいクラスのメンバをprivateで指定してたことでした。
XmlSerializerを使う場合は、publicじゃないと保存されないんですねorz
privateでもgetとset、両方のプロパティを用意していれば保存されるらしいんですが、今回の場合はgetしか実装してなかったので弾かれていたようです;;


ハマった場所その2、上手く読み込めない。
XmlSerializer.Deserializeで例外処理が飛んできてしまい、上手く読み込めませんでした。
コレがまた不思議で、保存時に保存する内容をデフォルトにしておくと上手く読み込めるのに、何か変更すると読み込めなくなるという謎の現象……。
で、Deserializeがなんかおかしいんだろうなぁと思っていたら、原因は全然違うところに。
保存時のファイルストリームを次のようにしていたんですが、

FileStream fs = new FileStream(filename, FileMode.OpenOrCreate)

「FileMode.OpenOrCreate」←コレが原因でした……。
なんかコレで指定した場合、上書きモードになって、前回より保存内容が短いとおしりにゴミが残る様子……。
素直に「FileMode.Create」にしたら直りました。


はぁ……思わぬところではまってしまった……。
↓XmlSerializerの基本的なところは、ここらを参考にさせてもらいました。
http://dobon.net/vb/dotnet/file/xmlserializer.html