我有一个静态类,用于提供到数据集的连接。
我选择了静态,所以每个类都可以调用数据集,而无需每次初始化它。
因此,这个类包含一个方法public static void Init() {...},其中我用表适配器填充数据集。
另外,我有几种方法,该查询可以将Dataset查询与其他代码逻辑分离开来。
在每种方法中,我都必须检查数据集是否已经初始化。
我的问题是:在没有在每个函数中显式实现的情况下,是否有可能执行这个检查,而不显式地实现这个类的任何函数?
或者,在我的数据库建模中是否有一个基本的错误?
提前谢谢!
发布于 2016-08-16 14:37:19
我建议使用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;
}
}发布于 2016-08-16 14:41:26
这只是静态代码的基本问题。你永远不知道你的代码的另一部分落在哪一个状态.好吧,不是,从来没有,但是你知道这个主意。
当您检查初始化失败时,您的代码会做什么?您能立即初始化它吗?还是停止进一步的执行?
一种方法是检查静态类方法中的初始化,并在检查失败时执行调用方所做的任何操作。但这在很大程度上取决于你的选择。
https://stackoverflow.com/questions/38977671
复制相似问题