我想在我的类中实现一个当前属性,它返回类的当前活动上下文(很像httpcontext.current等),如下所示:
using(classA x = new classA(..))
{
classB.Dosomething();
}
其中dosomething()方法获取classA的当前上下文以执行某些操作。
我将如何创建此类功能?
格尔茨, 理查德
答案 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
。如果有人在同一个线程中制作第二个副本,您可能希望抛出异常。或者,您可以保持堆栈。