2010-06-05 85 views
1

我有一个包含一些我希望共享的数据的聚集“主”类。 主类也有其他类的成员。 我想与这些其他班级成员分享数据。 什么是正确/最新的方式来做到这一点?在子组件之间共享类成员数据


我具体的例子如下。主类是一个.net表单。我在需要访问共享数据的主窗体上有一些控件(实际上是控件内的控件)。

Main Form 
- DataX 
- DataY 
- Control1 
-- Subcontrol1 
- Control2 
-- SubControl2 

子控件1和2都希望访问DataX和DataY。

问题是,我觉得更好的做法(减少耦合),应该是,任何一个子控件都不应该知道主窗体,或者主窗体不应该知道子控件 - 可能是前者。

对于不知道主窗体的子控件,可能意味着主窗体将控件1和2的引用传递给控件1和2,而控件1和2又将引用传递给子控件1和2。引用。如果我后来添加了DataZ和DataW,以及控件3和4以及子控件3和4,我不得不添加更多的参考转发代码。

对我来说SubControls 1和2成员对主窗体的引用似乎更简单。这样,任何子控件都可以请求MainForm.DataX或MainForm.DataY,如果我添加了新数据,我可以直接从子控件直接访问它,而不用麻烦。但它仍然涉及每次添加新的Control或Subcontrol时设置“MainForm”成员引用。它给了我一种'错误'的直觉。

正如你可能能够告诉我对任何一种解决方案都不满意。有没有更好的办法?

感谢

回答

1

你可以把数据X和数据Y静态成员,所以你可以访问它们 这工作得很好,如果你只需要运行

+0

我有一个以上的实例主要形式的一个实例主要的形式,所以在这种情况下静态不是我的选择。 – 2010-06-05 21:42:46

+0

为避免为每个新数据制作新的实现,您可以将它们全部放入数组或列表中,以便控件只需访问此数组 让子控件了解有关上级控件的知识? – kamahl 2010-06-05 23:03:34

+0

是的,但我宁愿他们没有。我想我可以将数据打包在一个容器中(可能是你建议的数组)。谢谢。 – 2010-06-07 10:44:55