2016-08-16 25 views
1

私は、データセットへの接続を提供する静的クラスを持っています。メソッドの呼び出しを繰り返す

私はすべてのクラスが毎回初期化せずにデータセットを呼び出すことができるように静的を選択しました。

このクラスには、public static void Init() {...}というメソッドが含まれています。そこで、テーブルアダプタでデータセットを埋めます。

また、データセットクエリーと他のコードロジックを区別するためのいくつかの方法があります。

これらのメソッドのそれぞれでは、データセットが既に初期化されているかどうかを確認する必要があります。

ここに私の質問です:このクラスのどのような機能が呼び出されても、すべての関数に明示的に実装することなく、このチェックを行う可能性はありますか?

または、このDBのものをモデリングする際に基本的な間違いがありますか?

ありがとうございます!

答えて

3

私はLazy<T>を使用することをお勧め:

private static Lazy<DataSet> CoreMyDataSet = new Lazy<DataSet>(() => { 
    Init(); 

    // ... Other code if required  

    // return dataset created 
    return s_MyDataSet; 
}); 

public static DataSet MyDataSet { 
    get { 
    return CoreMyDataSet.Value; 
    } 
} 
+0

非常に良いsoultion :)ありがとうございます。 –

1

まあ静的コードとちょうど基本的な問題です。どの状態でコードの別の部分が残っているのか分かりません...いいえしかし、あなたは考えを得る。

初期化が失敗したことを確認したら、コードは何をしますか?あなたはすぐにそれを初期化することができますか?それ以上の実行を停止しますか?

静的クラスのメソッドで初期化をチェックし、チェックが失敗したときに呼び出し元が実行するものを実行する方法があります。しかし、これはあなたの選択に大きく依存します。

+0

ええ、これまでのやり方だよ。 Atm私はすべてのメソッドをチェックします 私のinitメソッドは、データセットだけを塗りつぶします。 –

関連する問題