- - PR -
XML シリアル化について
1|2|3|4
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-21 03:23
IDictionary を実装するクラス (HashTable や Dictionary 等) を XML シリアル化する場合、どのようしたらよいのでしょうか?(できれば、ISerializable インターフェイスを使用して)
MSDN では、「IDictionary を実装するオブジェクトをシリアル化する必要があるなら、独自のシリアル化機能を実装しなければなりません。」 と記されていましたが、その 「独自のシリアル化機能」 というのが分かりませんでした。 http://www.microsoft.com/japan/msdn/enterprise/pag/scalenethowto01.asp どなたか、ご教示下さいますようお願い致します。 | ||||
|
投稿日時: 2006-04-21 06:04
Key の列挙をぐるぐる回して、Value にアクセスすればいいと思うんですけど、そういうことじゃない?
| ||||
|
投稿日時: 2006-04-21 23:21
っていうか、HashTable なら、ISerializable インターフェイスを実装しているから、そのまま使えるやん。
| ||||
|
投稿日時: 2006-04-22 00:24
Jitta さん、ご返答有難うございます。
また、当方のご返信が遅くなりすみませんでした。
仰るとおり、HashTable や Dictionary クラスには、確かに ISerializable インターフェイスは実装されているのですが、やはり、これらを XML シリアル化することはできませんでした(MSDN に記載されているとおり...?)。 この ISerializable インターフェイスでは、やはり XML シリアル化はできないということでしょうか?(バイナリ シリアル化はできる...?) | ||||
|
投稿日時: 2006-04-22 01:25
ほんとだ。確かに例外出ますね。Dictionary<string, string>で確認。
それなら,一旦シリアライズ可能な型に変換してからシリアライズしてやるとかでどうでしょう? 後は,Jittaさんのおっしゃってるような方法とか。 独自のシリアル化昨日っていうのは,そのままじゃシリアル化できないから自分で頑張ってくれってことだと思います。 | ||||
|
投稿日時: 2006-04-22 01:47
Kazuki さん、夜分遅くにご返答有難うございます。
Dictionary クラスをシリアライズすることは、やはり出来ないですよね... (ちなみに、XML シリアル化、バイナリ シリアル化のどちらを実行されたのでしょうか?) 独自のシリアル化というのも、Jitta さんの仰るとおり、シリアライズ(およびデシリアライズ)することが可能な型に変換するコーディングを行うということになり... でも、そうすると、ここで実装されている ISerializable インターフェイスって、何なのでしょう...? | ||||
|
投稿日時: 2006-04-22 02:19
何で実装されてるんでしょうね?
私にはわからないです…。 とりあえず自分でやるとしたら逃げとして IDictionary <-> IListに変換してくれるようなメソッドを用意して IListに変換してからシリアライズします。 デシリアライズは逆の手順でやります。 とりあえず変換メソッド
ひょっとしたらDictionaryを素直にシリアライズする手があるかもしれないです 詳しい方いたらお願いします。 | ||||
|
投稿日時: 2006-04-22 02:30
Kazuki さん、夜遅くまでご返答いただき有難うございます。
Dictionary クラスをシリアライズ(およびデシリアライズ)を行う場合は、Kazuki さんのサンプルコードのような、「独自のシリアル化機能」で実現するしかないんですかね... Kazuki さんの仰るとおり、Dictionary クラスに実装されている ISerializable インターフェイスを利用して、素直にシリアライズしたいものですが... (何だか、ちょっと悔しいですね...) |
1|2|3|4
次のページへ»