高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

[.NET]面倒そうなSystem.Xml.Serialization.XmlSerializer

 設定を外部ファイルに保存するために、最も簡単に用いられそうなクラスとして、.NETにはXmlSerializerというクラスがあります。これは、あるクラスのパブリックプロパティやフィールドを全部XMLファイルに書き込むという、クラスです(シリアライズというらしいです)。
 既存のクラスを保存するだけなら簡単なんでしょうが…。自分で作ったクラスを保存させようとすると一苦労です(-_-;)
どうもよく分かりませんが、このクラス、保存対象にするクラスに条件でもあるのか、自分で作ったクラス(Aとします)のフィールドとして、他の自作クラス(Bとします)があり、
さらにAを継承してクラス(Cとします)をつくり、それをシリアライズしようとすると、なぜかエラーになります。しかも、"Xmlを操作中にエラーが発生しました"という原因不明のエラーです。
で、CをAを継承したものではなくすると、すんなりと通ります。もう何がなんだか。
DelphiのTMemIniFileの方が、(自分でコードを書かなくちゃいけないけど)何倍も楽だった気がします。試行錯誤した割にはあまり大した成果が得られず、ちょっと疲労感を感じてしまいました。
.NETのクラスはどうも、説明不足な部分が多いかもしれないです。まあ、まだフレームワークとしては完全版ではないのかもしれませんけどねえ、わたしがDelphiに染まってるせいかもしれませんけど、なんだか感覚がおかしくなりそう・・・(x_x;)
 今思えば、TMemIniFile風のクラスを自作しちゃったら早いかもしれないですね。ArrayListを使ってしまえば簡単に作れそうだし、作ってしまおうか・・・。