重复调用方法

Repeating call of methods

我有一个静态 class 用于提供与数据集的连接。

我选择了static,所以每个class都可以调用数据集,不用每次都初始化。

所以这个 class 包含一个方法 public static void Init() {...},我用 table 适配器填充数据集。

此外,我有几种方法,可以让我将数据集查询与其他代码逻辑分开。

在这些方法中的每一个中,我都必须检查数据集是否已经初始化。

这是我的问题:是否有可能在调用此 class 的任何函数时进行此检查,而无需在每个函数中明确实现它?

或者我在对这些数据库进行建模时是否存在基本错误?

提前致谢!

我建议使用 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;
  }
}

嗯,这只是静态代码的基本问题。您永远不知道您的代码的另一部分处于哪个状态...好吧 永远不会 但您明白了。

当您检查初始化失败时,您的代码会做什么?你能马上初始化它还是停止进一步执行?

一种方法是检查静态 class 方法中的初始化,并执行检查失败时调用者将执行的任何操作。但这在很大程度上取决于您的选择。