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

コレクションに対するメソッドのオーバーライドについて

環境/言語:[VB2005,XP]
分類:[.NET]

お世話になります。
DataSetを継承したMyDataSetのクラスを作成しました。
このクラスで、tables.add("テーブル名称")を行う際に、
既定のコラムを作成しようと考えています。

tables.addをオーバーライドしたいのですが、
記述方法が分りません。

Public Class MyDataSet

Inherits DataSet

Public Sub New()

End Sub

End Class

どなたか、ご教授願います。
■No21711に返信(tororoさんの記事)
> お世話になります。
> DataSetを継承したMyDataSetのクラスを作成しました。
> このクラスで、tables.add("テーブル名称")を行う際に、
> 既定のコラムを作成しようと考えています。
>

「Inherits DataSet」で検索しました。

データセットとデータテーブル
http://www.atmarkit.co.jp/fdotnet/vblab/vsdbprog_02/vsdbprog_02_03.html
>やじゅ

ご回答ありがとうございます。
参考URLを拝見させていただきました。

クラスは入れ子にできるんですね。知らなかったorz
次のように記載したのですが、すでにTablesコレクションが存在するとのことで、エラーではじかれます。
う〜ん、よく分かりません。もう少し、詳細をご教授くれませんか?よろしくお願い致します。

Public Class MyDataSet

Inherits DataSet

Public Sub New()

End Sub

Class Tables

End Class

End Class
> DataSetを継承したMyDataSetのクラスを作成しました。
> このクラスで、tables.add("テーブル名称")を行う際に、
> 既定のコラムを作成しようと考えています。
>
> tables.addをオーバーライドしたいのですが、

オーバーライドはできません。

・Tables プロパティがNotOverridable
・DataTableCollection クラスがNotInheritable

つまり、Addのオーバーライドまでたどり着けません。

専用のメソッドを作成して利用者に呼び出しを強制する、
よりも、
呼び出してもらわなければいけないことに変わりありませんが、形として
DataTableを継承してコンストラクタに実装するか、
そのようなDataTableを作成するためのクラスを作成したほうが良いと思います。

後者の場合、
Public Class DataTableFactory

Public Shared Function CreateXXXTable() As Datatable

End Class
といった感じ。
ご回答ありがとうございます。

できないんですね。
独自のクラスを作成することにします。

>・Tables プロパティがNotOverridable
>・DataTableCollection クラスがNotInheritable
こういう見方ができるのですね。勉強になりました。

ありがとうございました。
解決済み!

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