【发布时间】:2010-05-03 14:58:47
【问题描述】:
我在 c# 中创建了一个 Singleton 类,其中包含一个我想在第一次调用 Singleton 时初始化的公共属性。
这是我写的代码:
public class BL
{
private ISessionFactory _sessionFactory;
public ISessionFactory SessionFactory
{
get { return _sessionFactory; }
set { _sessionFactory = value; }
}
private BL()
{
SessionFactory = Dal.SessionFactory.CreateSessionFactory();
}
private object thisLock = new object();
private BL _instance = null;
public BL Instance
{
get
{
lock (thisLock)
{
if (_instance == null)
{
_instance = new BL();
}
return _instance;
}
}
}
}
据我所知,当我第一次在 BL 类中寻址 Instance BL 对象时,它应该加载构造函数并初始化 SessionFactory 对象。
但是当我尝试时: BL.Instance.SessionFactory.OpenSession(); 我得到一个空引用异常,我看到 SessionFactory 是空的...
为什么?
【问题讨论】:
-
BL.Instance甚至不应该编译,因为Instance不是static属性...我认为Instance、_instance和thisLock都应该是static。 -
是 Dal.SessionFactory.CreateSessionFactory();返回null?
-
您使用的是什么版本的 C# / .NET?