C# 方法的重复调用

C# 方法的重复调用,c#,methods,dataset,C#,Methods,Dataset,我有一个静态类,用于提供到数据集的连接 我选择了静态,因此每个类都可以调用数据集,而无需每次初始化它 所以这个类包含一个方法publicstaticvoidinit(){…},我在其中用表适配器填充数据集 另外,我有几个方法,可以将数据集查询与其他代码逻辑分离 在这些方法中,我必须检查数据集是否已经初始化 我的问题是:是否有可能在调用此类的任何函数时进行此检查,而不在每个函数中显式实现它 或者在我对DB的建模中有一个基本的错误吗 提前谢谢 我建议使用Lazy: private static La

我有一个静态类,用于提供到数据集的连接

我选择了静态,因此每个类都可以调用数据集,而无需每次初始化它

所以这个类包含一个方法
publicstaticvoidinit(){…}
,我在其中用表适配器填充数据集

另外,我有几个方法,可以将数据集查询与其他代码逻辑分离

在这些方法中,我必须检查数据集是否已经初始化

我的问题是:是否有可能在调用此类的任何函数时进行此检查,而不在每个函数中显式实现它

或者在我对DB的建模中有一个基本的错误吗


提前谢谢

我建议使用
Lazy

private static Lazy CoreMyDataSet=new Lazy(()=>{
Init();
//…其他代码(如需要)
//返回已创建的数据集
返回s_MyDataSet;
});
公共静态数据集MyDataSet{
得到{
返回CoreMyDataSet.Value;
}
}

我建议使用
惰性

private static Lazy CoreMyDataSet=new Lazy(()=>{
Init();
//…其他代码(如需要)
//返回已创建的数据集
返回s_MyDataSet;
});
公共静态数据集MyDataSet{
得到{
返回CoreMyDataSet.Value;
}
}

这只是静态代码的基本问题。您永远不知道代码的另一部分将其保留在哪个状态。。。嗯,不永远不,但你明白了

当您检查初始化失败时,您的代码做什么?您可以立即初始化它,还是停止进一步执行


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

这只是静态代码的基本问题。您永远不知道代码的另一部分将其保留在哪个状态。。。嗯,不永远不,但你明白了

当您检查初始化失败时,您的代码做什么?您可以立即初始化它,还是停止进一步执行


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

是的,到目前为止我就是这样做的。Atm我签入每个方法我的init方法只填充数据集。是的,到目前为止我就是这样做的。Atm我签入每个方法我的init方法只填充数据集。
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;
  }
}