【问题标题】:how to feed all methods with one instance of required class [closed]如何为所有方法提供所需类的一个实例[关闭]
【发布时间】:2012-10-03 06:53:58
【问题描述】:

有一个类,其他类在他们的方法中使用它。我想在请求期间只为类 一个实例 提供所有方法。

更新:说请求期间意思是:当用户向服务器发出请求以加载网页时(beginRequest),将调用和引发几个事件和方法。他们中的许多人需要我的班级将一些数据保存到数据库中。我希望所有方法都只使用 一个缓冲这些数据的实例,并在结束请求将所有数据一次插入数据库中。并且这些重复下一个请求

【问题讨论】:

  • @rene:我更新了问题,我希望所有需要此类实例的方法都使用相同的实例。但只是在请求期间。我认为单身人士做同样的事情,但对于所有请求
  • “请求”是什么意思?一个特定的方法,一次?一个特定的方法,每次..?
  • @AndersHolmström:我更新了问题
  • 谢谢,现在一切都清楚了。我会说你应该对单例进行变体。

标签: asp.net httprequest


【解决方案1】:

您可以使用每个请求的集合并使用它创建每个请求的单音。

http://www.4guysfromrolla.com/articles/060904-1.aspx

【讨论】:

  • @JackSpector:谢谢,我找到了这篇博文bit.ly/8sjlZ。因为我想在类库中编写这个类,你觉得使用 System.Runtime.Remoting.Messaging.CallContext 而不是 HttpContext 怎么样?
  • 从未使用过 CallContext,但根据 MSDN,它与线程存储更相关。如果您要在 Web 应用程序中使用您的类库,并且您不需要保存比每个请求更多的数据,那么最好使用 HttpContext.Current。
【解决方案2】:

使用单例模式

来自P&P

在某些情况下,应用程序中的所有其他对象都需要使用某种类型的数据。在大多数情况下,这种类型的数据在系统中也是唯一的。例如,用户界面只能有一个所有应用程序都必须访问的鼠标指针。同样,企业解决方案可以与管理与特定遗留系统的连接的单网关对象交互

如何使一个对象的实例全局可用并保证只创建一个类的实例?

Example:

public class Singleton
{
   private static Singleton instance;

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}

【讨论】:

  • 这可以在请求范围内创建一个单例吗?
  • 当然。使用 HttpContext.Current.Items 集合来存储单例实例。
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多