2007年06月06日

TableAdapterのベースクラス

   このエントリーをはてなブックマークに追加 Clip to Evernote
ずいぶん前だが、
C#のパーシャルクラスとデザイナが生成したコードについて考えてみる

という記事の中で、 「なちゃさん」から
---
TableAdapterは、デザイナでBaseClassプロパティで基底クラスを指定できる
--
ということを教えていただきました。

いままで確かめてみる機会がありませんでしたが、やっと利用する機会が出てきました。

これを使えば、いくつもある TableAdapter で同じコードを書く必要がなくなります。

以下、書いてみたコードの断片。


 public abstract class AbstractTableAdatpter : Component {
private const string FieldNameCommandCollection = "_commandCollection";

private SqlCommand[] CommandCollection {
get {
Type type = this.GetType();
FieldInfo field = type.GetField(FieldNameCommandCollection,
BindingFlags.NonPublic | BindingFlags.Instance);
SqlCommand[] array = (SqlCommand[])field.GetValue(this);
return array;
}
}

// 上記 CommandCollectionを使って、実装
// タイムアウト値の取得と設定を行う。
public int CommandTimeout {
get { ... }
set { ... ]
}
...
}

_adapter フィールドや、_connection フィールドも同じようにしてやれば、
いろんなことが共通化出来そうです。

ただ、まだ動かしていないので、正しく動くかどうかわかりません...


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50818566