重复调用方法
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 方法中的初始化,并执行检查失败时调用者将执行的任何操作。但这在很大程度上取决于您的选择。
我有一个静态 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 方法中的初始化,并执行检查失败时调用者将执行的任何操作。但这在很大程度上取决于您的选择。