我在c#中创建了一个Singleton类,其中有一个公共属性,我想在初次调用Singleton时进行初始化。Singleton constructor question
这是我写的代码:
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类的实例BL对象,它应该加载构造,这应该初始化SessionFactory对象。
但是,当我尝试: BL.Instance.SessionFactory.OpenSession(); 我得到一个空引用异常,并且我看到SessionFactory为空...
为什么?
'BL.Instance'甚至不应该编译,因为'Instance'不是'static'属性......我认为'Instance','_instance'和'thisLock'都应该是'static'。 – Thomas 2010-05-03 06:55:22
是Dal.SessionFactory.CreateSessionFactory();返回null? – Anthony 2010-05-03 06:56:50
您使用的是C#/ .NET的哪个版本? – 2010-05-03 08:20:57