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;
}
}