- PR -

IEnumerableのXMLシリアライゼーション

1
投稿者投稿内容
Atsushi.Eno
ベテラン
会議室デビュー日: 2003/04/23
投稿数: 60
投稿日時: 2003-11-21 22:02
.NETで簡単XML 第11回 オブジェクトをXMLでシリアライズ(3)5.自作コレクションのシリアライズには

引用:

デシリアライズを可能にするには、さらにAddメソッドが必要である。このメソッドは戻り値がなく、引数はObject型を1つだけ持つ必要がある。クラス・ライブラリのリファレンス・マニュアルを見ると、引数はObject型ではなくてもよいように読めるが、実際に筆者が試してみたところ、Object型である必要があった。


とありますが、これは間違いだと思います。たとえばXmlSchemaObjectCollection型のXmlSchema.Itemsは、XmlSerializerでデシリアライズすることができますが、Add()メソッドの引数はXmlSchemaObjectです。

XMLシリアル化の概要の「XML シリアル化に関する考慮事項」には、

引用:

IEnumerable または ICollection を異なる方法で実装している複数のクラスは、特定の要件を満たしていれば XmlSerializer で処理できます。IEnumerable を実装するクラスは、単一のパラメータを受け取るパブリックな Add メソッドを実装する必要があります。Add メソッドのパラメータは、GetEnumerator メソッドによって返される IEnumerator.Current プロパティから返される型と一致している (ポリモーフィックである) 必要があります。


とあるので、もしかしてこれを満たしていなかったのではないでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)