我需要在两个静态对象之间共享一个对象实例,如下所述。我第一次拨打MyProperty
,我必须实例化MyObject
。静态构造函数和共享数据
作为一个聪明的读者,你已经发现了这个错误。我第一次使用First
,我将实例化MyProperty
,并且第一次使用Second
,我将实例化MyProperty
。这是重新初始化它,并放弃这个对象的所有状态。
public static class First
{
static First() { MyProperty = new MyObject(); }
public static MyProperty{ get; set; }
}
public static class Second
{
static Second() { MyProperty = new MyObject(); }
public static MyProperty
{
get { return First.MyProperty; }
set { First.MyProperty= value; }
}
}
在这种情况下的解决方案是只是为了检查无效:
static Second()
{
if(MyProperty == null) MyProperty = new MyObject();
}
但是,对我来说有一种气味。我有不好的代码感觉。所以有我的问题:是否有一个模式或一些好的建议来共享两个静态对象之间的上下文?
你为什么要用'static'?它会造成这样的混乱。 –
“气味”并不完全掩盖它:)没有你需要什么行为的背景(对于哪种“静态”是你当前的解决方案),得到一个好的答案是非常棘手的。为什么First和Second都需要是静态的,为什么他们需要引用一个实例类型的同一个引用? –
因为它是应用程序不同部分之间的共享上下文。 –