在哪里创建单例实例,如果我不需要这个实例在我的程序
本文关键字:实例 不需要 我的 程序 创建 单例 如果 在哪里 | 更新日期: 2023-09-27 18:16:29
假设我有一些只需要实例化的单例。在构造函数中,它启动定时器,并每秒更新一些模型数据。
执行单例构造函数,我只需要引用它。我不需要结果实例,因为我不需要对单例做任何事情,它应该在整个应用程序执行期间存在。
但是c#不允许这样的结构:WcfLoader.Instance;
所以我必须使用这个WcfLoader loader = WcfLoader.Instance;
但是我从不使用loader
实例。
它看起来很奇怪,是不是意味着我做错了什么?
在你的类中添加一个静态Init方法,然后调用WcfLoader。Init而不是获取实例。这样看起来一点也不奇怪。
不要让这成为获得Instance
属性的副作用。获取属性不应该有副作用。
在单例上添加一个InitTimer()
或类似的方法
还可以使用实例构造函数:
public class WcfLoader {
static WcfLoader _instance;
public WcfLoader() {
if ( _instance == null ) {
// do the initialization
_instance = this;
}
}
}
那么初始化包括调用构造函数,甚至不将引用存储在任何地方。
// just create a new object which causes the initialization code to execute
new WcfLoader();
当然,显式初始化方法(正如其他人提到的)是最好的选择。