- - PR -
型指定DataSetの自動生成されるコードについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-24 12:14
VS2005です。
型指定DataSetを作成した場合に自動で生成されるコードを 勉強しております。 そこで質問なのですが DataTableクラスのItemプロパティで DataRowオブジェクトを型指定されたDataRowにキャストする部分で キャストエラーが発生しないのはどこのコードが絡んでいるのでしょうか? Public Default ReadOnly Property Item(ByVal index As Integer) As XXXXXRow Get Return CType(Me.Rows(index),XXXXXRow) End Get End Property | ||||
|
投稿日時: 2007-04-24 12:54
> return CType(Me.Rows(index),XXXXXRow)
ここで XXXXXRow 型にキャストしているわけですが、 もし Me.Rows(index) がXXXXXRow 型を継承していなければキャストに失敗しますよね。 Me.Rows が public で公開されている場合、 Add メソッドを使って自由に DataRow が格納されてしまう可能性があります。 Me.Rows は内部に隠蔽し、 かわりに Add( row as XXXXXRow ) のようなメソッドが定義されていたりしませんか? ※ 型付けデータセットのソースは読んでいません。 | ||||
|
投稿日時: 2007-04-24 13:25
ごめん。質問自体が理解不能。 これのどこが疑問なの? | ||||
|
投稿日時: 2007-04-24 13:46
ぶさいくろう様
質問の仕方が不十分ですいませんでした。 型指定DataSetの機能を独自のクラスに応用できればと自動生成されたコードを 眺めております。 例えば下記のようなコードを書いたとしても XXXXDataTableのItemプロパティでキャストエラーになるのですが 型指定されたDataSetはどのように関連づいているのか疑問に思った次第です。 よろしくおねがいいたします。 DataTableから派生した独自のDataTableを作成します。 Partial Public Class XXXXXDataTable Inherits DataTable Public Sub New() MyBase.New() 'ここでテーブルの列定義を行います。 End Sub Default Public ReadOnly Property Item(ByVal index As Integer) As XXXXXDataRow Get Return CType(Me.Rows(index), XXXXXDataRow) End Get End Property End Class DataRowから派生した独自のDataRowを作成します。 Partial Public Class XXXXXRow Inherits System.Data.DataRow ・・・略・・・ End Class | ||||
|
投稿日時: 2007-04-24 14:15
解決しましたので報告します。
自動生成されたコード内で下記コードが関連しておりました。 ありがとうございました。 Protected Overrides Function NewRowFromBuilder(ByVal builder As System.Data.DataRowBuilder) As System.Data.DataRow Return New XXXXXDataRow(builder) End Function |
1