- - PR -
XML シリアル化について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-23 07:47
Kazukiさんの、
http://blogs.wankuma.com/jitta/archive/2005/10/16/18721.aspx これと関係するかなぁ?ジェネリックをそのままシリアライズできないようです。 ハッシュテーブルのほう、実は、シリアライズできないようなぁ。。。と思いながら、書いていました。というのも、Key も Value も Object ですから、シリアライズ可能かどうかが分からないからです。 なので、Hashtable をメンバに持つクラスをシリアライズするときと、Hashtable を継承したクラスをシリアライズするときで、やり方が変わると思います。 | ||||||||
|
投稿日時: 2006-04-23 10:13
私のは,XmlSerializerで試していました。
SoapFormatterだとIList<TKey, TValue>も駄目ですねorz BinaryFormatterだと特に問題なさげです。 [ メッセージ編集済み 編集者: Kazuki 編集日時 2006-04-23 10:43 ] | ||||||||
|
投稿日時: 2006-04-23 11:54
Kazuki さん、Jitta さん、度々ご返答有難うございます。
私もいろいろと試行錯誤してみましたが駄目でした。 やはり、MSDN に記載されているように、IDictionary を実装するオブジェクトをシリアル化する場合は、独自のシリアル化機能を実装しなければならないということですかね... でも、Hashtable や Dictionary クラスに実装されている ISerializable インターフェイスは、一体どういう意味なのでしょう...やはり、何だかすっきりしないです... | ||||||||
|
投稿日時: 2006-04-23 14:33
ASP.NET の Session 変数には入れれますよね → Hashtable でもそっちは SerializableAttribute か・・・ | ||||||||
|
投稿日時: 2006-04-23 15:38
かるあさん、ご返答有難うございます。
上記の場合、「クラスがシリアル化処理を制御する ISerializable インターフェイスを実装している場合でも、SerializableAttribute 属性を適用する」ということですかね(以下参照)。 http://msdn2.microsoft.com/ja-JP/library/system.serializableattribute(VS.80).aspx そうなると、Dictionary クラスに実装されている ISerializable インターフェイスって...やはり、これらの XML シリアル化は、単純にはできないのですかね... | ||||||||
|
投稿日時: 2006-04-23 18:03
XmlSerializer を使ったシリアル化は、SerializableAttribute や ISerializable は関係ないですよね。
Hashtable や Dictionary の ISerializable は、BinaryFormatter や SoapFormatter に関係するという事でしょう。 他にも http://support.microsoft.com/default.aspx?scid=kb;ja;814187 のような問題があるようです。 XmlSerializer の限界、という事でしょうか。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-04-23 18:24
囚人さん、ご返答有難うございます。
というのは、Hashtable や Dictionary の ISerializable は、XML シリアル化には関係ないということでしょうか? そうであれば、やはり、XmlSerializer の限界ということであり、このような場合は、独自のシリアル化機能を実装しなければならないですかね... | ||||||||
|
投稿日時: 2006-04-23 19:02
のはずです。XmlSerializer を制御するのは、System.Xml.Serialization 名前空間の属性群です。 XmlSerializer のドキュメントにもありますが、IEnumerable と ICollection を実装するクラスは特別扱いです。
Hashtable や Dictionary はそれに反している、ということですね。 Hashtable の方は SoapFormatter でシリアル化できるようですし(多分)、それが気に入らないなら、独自実装になるのでしょう。 _________________ 囚人のジレンマな日々 |