类中的Current / Context属性

时间:2010-05-13 16:27:58

标签: .net c#-3.0

我想在我的类中实现一个当前属性,它返回类的当前活动上下文(很像httpcontext.current等),如下所示:

using(classA x = new classA(..))
{
    classB.Dosomething();
}

其中dosomething()方法获取classA的当前上下文以执行某些操作。

我将如何创建此类功能?

格尔茨, 理查德

3 个答案:

答案 0 :(得分:0)

显然它需要一些并发保护,但如果你正在寻找单例方式....(它还需要实现IDisposable)

public class A {
    public static A Current { get { return _instance } }

     private static A _instance {
         get 
         { 
            if(_instance ==null){ 
                 instance = new A();
             } 
             return _instance;
          }
      }

}

答案 1 :(得分:0)

通常,“Current”属性是基于每个线程保持的静态属性。 ThreadLocal<T>是实现此目标的理想选择。

答案 2 :(得分:0)

您应该创建[ThreadStatic] static当前属性,然后在构造函数中编写Current = this,并将其设置为null中的Dispose。如果有人在同一个线程中制作第二个副本,您可能希望抛出异常。或者,您可以保持堆栈。