Я не уверен в области действия одного статического внутреннего класса нестатического класса.
В следующих строках будет ли переменная DataContextCreator.Instance (часть шаблона Singleton) указывать на один и тот же экземпляр PDataContext для всех объектов Page / запросов страницы или каждый объект будет иметь свой экземпляр?
public class Page : System.Web.UI.Page
{
private class DataContextCreator
{
static DataContextCreator() { }
public static readonly PDataContext Instance = new PDataContext(TUtil.GetConnectionString());
}
public PDataContext DataContext
{
get
{
return DataContextCreator.Instance;
}
}
}
Нужно ли работать с HttpContext.Current, чтобы это работало желаемым образом, т. Е. Нет общего DataContext? Если так, есть ли другой способ?
Я не уверен, что изменение статического класса на приватный (как я это сделал) помогает.
Спасибо!
EDIT:
Это мое решение, в котором у меня теперь такая же возможность ленивой загрузки, но без статических переменных. Я не думаю, что в этом случае мне нужно наложить блокировку мьютекса на переменную удержания.
private PDataContext _DataContext;
private PDataContext DataContext
{
get
{
if (this._DataContext == null)
{
this._DataContext = new PDataContext(TUtil.GetConnectionString());
}
return this._DataContext;
}
}