【发布时间】:2015-12-19 22:39:46
【问题描述】:
我有一组由用户控件组成的 aspx 页面。每个用户控件都继承自一个基类。在那个基类中,我想在我的用户控件中放置一些我需要访问的通用数据对象(通过 EF)。我怎样才能有效地做到这一点,以便每个用户控件访问相同的类实例或数据副本?
【问题讨论】:
我有一组由用户控件组成的 aspx 页面。每个用户控件都继承自一个基类。在那个基类中,我想在我的用户控件中放置一些我需要访问的通用数据对象(通过 EF)。我怎样才能有效地做到这一点,以便每个用户控件访问相同的类实例或数据副本?
【问题讨论】:
您可以使用Singleton Per Request pattern。如果您只希望对象的单个实例在请求的生命周期内可用,这将非常有用。
它通过将项目存储在HttpContext.Items 集合中来做到这一点。
public class SingletonPerRequest
{
public static SingletonPerRequest Current
{
get
{
return (HttpContext.Current.Items["SingletonPerRequest"] ??
(HttpContext.Current.Items["SingletonPerRequest"] =
new SingletonPerRequest())) as SingletonPerRequest;
}
}
}
【讨论】: