DOBON.NET DOBON.NETプログラミング掲示板過去ログ

XmlBoundElement シリアライズエラーについて

環境/言語:[OS : Windows XP Professional / 言語 : Visual Basic .NET / .NET Framework : 1.1]
分類:[.NET]

【解決したい問題】

初めまして、西と申します。
下記の現象についてお教え下さい。

Windowsアプリのシリアライズを行おうとしております。
フォーマッタはSoapFormatterを使っております。
あるクラスをシリアライズしようとするとあるメソッドで下記のエラー
が起きてしまいます。

**** エラーメッセージ ****
System.Runtime.Serialization.SerializationException' のハンドルされていない例外が mscorlib.dll で発生しました。

追加情報 : アセンブリ System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 の型 System.Xml.XmlBoundElement は シリアル化可能として設定されていません。
******************

***クラスソース****
<Serializable()> _
Public Class AA
Private m_TDataSet As DataSet
Private m_List As SortedList
     ・
     ・
Private Sub makeDaikaNodeList()

m_List = New SortedList
Dim code As String = ""
Dim nodeAL As ArrayList = New ArrayList
Dim rinfo As DataRow

For Each rDKinfo In TDataSet.Tables("STable").Rows
If code <> rDKinfo("No").ToString().TrimEnd() Then
If (code .Length > 1) Then
m_List.Add(code, nodeAL)
End If
code = rinfo("No").ToString().TrimEnd()
nodeAL = New ArrayList
End If
nodeAL.Add(rinfo)
Next
If (nodeAL.Count > 0) Then
m_List.Add(code, nodeAL)
End If
End Sub
*************

上記のメソッドはSortedListに複数のArrayListを入れる処理です。
デバックしていくと下記の箇所を行うとエラーが起きます。
  nodeAL.Add(rinfo)

DataRowがシリアライズの妨げになっているようにおもうのですが
ちょっとよく解らず悩んでおります。

なんとかこれをシリアライズできないでしょうか?

皆様よろしくお願いします。

【解決するために何をしたか】

Googleで”XmlBoundElement シリアライズ”で検索を行い、下記の記事を発見。
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=33418
DataRowクラスがシリアライズに影響あるのかな?程度の情報が解りました。
お気付きのように DataRow は XML シリアライズできません。
#仮にできたとしても、デシリアライズできませんよね。< DataRow には既定のパブリックコンストラクタがありませんし。

 DataRow の代わりにシリアライズ用のクラスを作成することになるでしょうか。


 同じく GotDotNet Japan 掲示板の、以下のスレなどにも目を通しておくと役に立つかも知れません。

XML Web サービスのメソッド引数にDataTableはダメなのですか?
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=32739

オブジェクト指向で複数テーブルを使う場合の考え方
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=33836
深山様
早々のお返事大変有り難うございました。
お返事が大変遅くなりまして申し訳ありません。

>  お気付きのように DataRow は XML シリアライズできません。
> #仮にできたとしても、デシリアライズできませんよね。< DataRow には既定のパブリックコンストラクタがありませんし。
> >  DataRow の代わりにシリアライズ用のクラスを作成することになるでしょうか。

やはりそうですよね。

> > >  同じく GotDotNet Japan 掲示板の、以下のスレなどにも目を通しておくと役に立つかも知れません。
> > XML Web サービスのメソッド引数にDataTableはダメなのですか?
> http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=32739
> > オブジェクト指向で複数テーブルを使う場合の考え方
> http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=33836

いろいろとアドバイスありがとうございます。
試行錯誤いろいろためしてやってみたいと思います。

本当に有り難うございました。

DOBON.NET | プログラミング道 | プログラミング掲示板