VB.NETのJavaでいうところのクラス初期化子
# 5年ぶりにMS系のプロジェクト参画中...
Javaの場合
public class Class1 { static { // クラス初期化子 } }
VB.NETの場合
Public Class Class1 Shared Sub New() ' Sharedコンストラクタ End Sub End Class
今のプロジェクトでは、独自のエンティティマッピングが行われてる。
[System.Data.DataTableのラッパークラス]
↑
[各テーブル毎のクラス]
っていう構造。
[System.Data.DataTableのラッパークラス]は内部でSystem.Data.DataTableの
インスタンスもってて、それへの操作を提供している感じ。
ポイントは[各テーブル毎のクラス]でフィールドだけ宣言しておくと、
各テーブル毎のクラスがインスタンス化されるときに、
フィールド宣言を参照して動的に、[System.Data.DataTableのインスタンス].Columns.Addしてくれることみたい。
オイラ、ぱふぉちゅー担当なもんで、プロファイラ使って調査しているんだけど、
そのリフレクションやってる関数呼び出しが、
クライアント総elapse 1,805.09 msec中の
963.14 msecで
53.4%しめていることが分かったんだ。
呼び出し回数は232回だから
平均4.15 msec
1回は大したことなにんだけど、チリツモ系なので、SingletonなManager1コ作ってキャッシュしとくか、
リフレクション処理をクラスのロード時にだけ動いてキャッシュするようにするとかね...
"クラスのロード時"ってJavaならクラス初期化子。
ってことで試したのだw