Я не уверен в объеме одного статического внутреннего класса нестатического класса.Объем статического внутреннего класса в ASP.NET
В строках ниже, будет ли переменная DataContextCreator.Instance (часть шаблона Singleton) указывать на один и тот же экземпляр PDataContext для всех объектов страниц/страниц или каждый объект имеет свой собственный экземпляр?
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;
}
}
Если код на странице, нет никакой необходимости для блокировки. Поскольку свойство является локальным для страницы, к нему будет обращаться только один поток. – Guffa