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