DBアクセス層の基底クラスのシグニチャのサンプルです。
基底クラス
public abstract class AbstractTypedGateway<TDataSet, TDataTable, TDataRow> : AbstractGateway where TDataSet : DataSet, new() where TDataTable : DataTable, new() where TDataRow : DataRow { }
TDataSet、TDataTable、TDataRowは、デザイナで自動生成された型付きデータセットの型です。クラス内部ではその型を使ってロジックを記述します。
継承クラス
基底クラスを継承したHogeテーブルのクラスはこうなります。
public class HogeGateway : AbstractTypedGateway< FugaDataSet, FugaDataSet.HogeDataTable, FugaDataSet.HogeRow> { }
これで型付きデータセットでテーブルのスキーマを抽象化することができます。