我有一个静态类,用于提供与数据集的连接。
我选择了static,因此每个类都可以调用数据集,而不是每次都初始化它。
所以这个类包含一个方法public static void Init() {...}
,我用表适配器填充数据集。
另外,我有几种方法可以查询我将数据集查询与其他代码逻辑分开。
在每种方法中,我都必须检查数据集是否已经初始化。
这是我的问题:是否有可能进行此检查,无论调用此类的任何函数,都没有在每个函数中明确实现它?
或者我在建模这个DB的东西时有一个基本错误吗?
提前致谢!
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
这只是静态代码的基本问题。你永远都不知道你的代码的另一部分留在了哪个状态......好吧不是从不但是你明白了。
检查初始化失败时,代码会执行什么操作?您可以立即初始化它还是停止进一步执行?
一种方法是检查静态类方法中的初始化,并执行调用失败时调用者所做的任何操作。但这在很大程度上取决于您的选择。