У меня просто есть вопрос относительно сгенерированного PetaPoco кода Database.cs из версии 4.0.3. См. ниже фрагмент кода:
public partial class postgresqlDB : Database
{
public postgresqlDB()
: base("postgresql")
{
CommonConstruct();
}
public postgresqlDB(string connectionStringName)
: base(connectionStringName)
{
CommonConstruct();
}
partial void CommonConstruct();
public interface IFactory
{
postgresqlDB GetInstance();
}
public static IFactory Factory { get; set; }
public static postgresqlDB GetInstance()
{
if (_instance!=null)
return _instance;
if (Factory!=null)
return Factory.GetInstance();
else
return new postgresqlDB();
}
[ThreadStatic] static postgresqlDB _instance;
public override void OnBeginTransaction()
{
if (_instance==null)
_instance=this;
}
public override void OnEndTransaction()
{
if (_instance==this)
_instance=null;
}
.....
..... <snip />
Глядя на функцию GetInstance()
, почему return new postgresqlDB()
никогда не присваивается частной переменной _instance
?
Разве это не означает, что каждый вызов GetInstance()
всегда будет создавать новый экземпляр, потому что if (_instance != null) return _instance;
никогда не будет истинным?
Спасибо всем за помощь.
_instance
. - person Spongebob   schedule 24.07.2012