我在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