2010-06-05 86 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