- - PR -
XmlSerializerについて(VB2005)
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-07-24 14:07
こんにちは。
XmlSerializerについての質問です。 ArrayList内に、あるクラスの派生クラスがいくつか入っています。 ArrayListに <XmlArrayItem(Type:=GetType(CBase))> と、派生クラスのベースクラスをタイプとして指定したところ、 シリアル化の際に、 「型 CClass は指定されていません。スタティックに使用できない型を指定するには XmlInclude または SoapInclude 属性を使ってください。」 というエラーが出てしまいます。 http://www.weblio.jp/content/XmlIncludeAttribute+%E3%82%AF%E3%83%A9%E3%82%B9 ネットで検索してなどのページを読んだのですが、正直に言って、よく理解できません。 ArrayList内に複数の型のクラスが入っている場合、どのようにすれば、シリアル化(デシリアル化)できるのでしょうか。 よろしくお願いします。 |
|
投稿日時: 2007-07-24 14:20
@IT:連載:.NETで簡単XML 第11回 オブジェクトをXMLでシリアライズ(3)
http://www.atmarkit.co.jp/fdotnet/easyxml/easyxml11/easyxml11_01.html |
|
投稿日時: 2007-07-24 15:23
こんいちは。
ご返答ありがとうございます。 プロパティとしてArrayListを返しているところに、 <XmlArrayItem(Type:=GetType(CClass1)), XmlArrayItem(Type:=GetType(CClass2))> のように、ArrayList内に収まるクラスの型を書き綴り、実行してみたところ、 「AryCls 型のオブジェクトのシリアル化を実行中に循環参照が見つかりました。」 とのエラーが出るようになってしまいました。 どうしたらよいのでしょうか。 すいません。頼りっぱなしで。 |
|
投稿日時: 2007-07-24 16:11
エラーメッセージが言ってるように
シリアル化しようとしているCClass1かCClass2に循環参照があるんじゃないでしょうか? |
|
投稿日時: 2007-07-24 16:57
ありがとうございます。
>シリアル化しようとしているCClass1かCClass2に循環参照があるんじゃないでしょうか? プログラム自体は正常に動くのですが、 おそらくそうなってしまっているのだろうと思います。 PublicなPropertyでシリアル化させたくない場合は、 どのようにすればよいのでしょうか。 すいません。次から次へと質問ばかりで。 |
|
投稿日時: 2007-07-24 17:02
すいません。
自己レスです。 NonSerialized以外にも、XmlIgnoreというのがあるんですね。 |
1