- PR -

ArrayListのシリアライズ

1
投稿者投稿内容
会議室デビュー日: 2004/02/26
投稿数: 14
投稿日時: 2004-04-24 00:12
http://www.atmarkit.co.jp/fdotnet/easyxml/easyxml11/easyxml11_04.html
を見ると一種類のクラスであれば、シリアライズする方法がわかりましたが、
複数種類のクラスを全部シリアライズする方法がわかりません。
あとColor構造体がクラスのフィールドになっている場合の
シリアライズのやり方も教えてくれると幸いです。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-24 08:09
諸農です。

引用:

あさんの書き込み (2004-04-24 00:12) より:
http://www.atmarkit.co.jp/fdotnet/easyxml/easyxml11/easyxml11_04.html
を見ると一種類のクラスであれば、シリアライズする方法がわかりましたが、
複数種類のクラスを全部シリアライズする方法がわかりません。



記事で示されているサンプルコードの場合なら、ArrayListの前に
シリアライズしたいクラスをXmlArrayItem属性で指定すればいいか
と思います。

例えば記事中のPerson,Adult,Childのすべてのクラスを対象にするなら、
コード:
public class Persons
{
    [XmlArrayItem(Type = typeof(Child)),
     XmlArrayItem(Type = typeof(Adult)),
     XmlArrayItem(Type = typeof(Person))]
    public ArrayList PersonsList;


の様な感じになると思います。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
会議室デビュー日: 2004/02/26
投稿数: 14
投稿日時: 2004-04-25 00:07
おおお。試してみました。できました。
ありがとーございます。

Color構造体とかのシリアライズはいまだわかってませんが、
とにかくありがとーございました。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-04-25 00:24
引用:

あさんの書き込み (2004-04-25 00:07) より:
Color構造体とかのシリアライズはいまだわかってませんが、


Color構造体は出来なかったと思います(XMLシリアライズ)。

シリアライズの目的はなんでしょう?
※バイナリやSOAPフォーマッタを使ったシリアライズなら出来ると思いますが。
ant
常連さん
会議室デビュー日: 2004/03/24
投稿数: 44
投稿日時: 2004-04-25 01:43
XmlSerializerを用いて、シリアル化できるのは、
読み書きのできるpublicプロパティに限られています。
従って、読み込み専用のColor構造体のメンバは基本的に
XmlSerializerを用いてシリアル化できません。

しかし、方法はいくつかあります。

最も簡単な例はここにあります。
http://www.microsoft.com/japan/msdn/net/general/persistappsettnet.asp#persistappsettnet_topic4

また、推奨はしませんが、完全に自動化されているXmlSerializerのシリアル化も
IxmlSerializableというインターフェイスを使用することによって、
独自のシリアル化コードを実行させることもできます。
会議室デビュー日: 2004/02/26
投稿数: 14
投稿日時: 2004-04-28 00:00
シリアライズの目的は設定の保存で、インスタンスのそのまま保存です。
かじったかぎりではバイナリシリアライズが目的に一番近いのですが、
メモ帳などで編集できるといいなーということでXMLシリアライズでやっていて
わからないことがあったので質問しました。
ですが、まだシリアライズについて何が可能で不可能なのか
あまりよくわかっていないのもありまして・・
リンク先見ました。だいたいですが、わかりました(つもり)
どうもありがとうございました!!
会議室デビュー日: 2004/02/26
投稿数: 14
投稿日時: 2004-05-04 11:51
またまた質問です
(Publicフィールドである)FontクラスをSoapFormatterでシリアライズできましたが
デシリアライズができません。

'System.Reflection.TargetInvocationException' のハンドルされていない例外が mscorlib.dll で発生しました。

追加情報 : 呼び出しのターゲットが例外をスローしました。

を投げます。なぜでしょうか…。
会議室デビュー日: 2004/02/26
投稿数: 14
投稿日時: 2004-05-04 13:39
http://www.microsoft.com/japan/msdn/library/?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDrawingFontClassTopic.asp?frame=true

Serializableなのになー。と謎は解けませんが、(これが勘違いか?!)
プロパティでラップすることで回避できました。
ありがとーございました!
1

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