2009-04-12 31 views
0

我有一個動態創建一些子對象的對象。這些子對象是從UserControl派生的。傳遞信息將信息傳遞給父母的最好方法是什麼?在過去,我使用了委託事件,但最近我只是在子對象的構造函數中使用父對象的引用。什麼是最好的方法將信息從一個孩子傳遞給C#中的父對象#

我確實對緊耦合有所保留,因爲我擔心如果父對象無法及時執行引用的方法,可能會綁定子對象。

我不想開始一個新問題,所以我會問這裏。

如果我爲動態創建的對象連接了事件並且稍後將對象處理掉了,那麼我應該在處理事件之前解除事件。

和......如果我將我的動態創建的對象保存在一個數組或哈希表中,只需將該列表項從內存中移除即可。

回答

6

這將取決於具體情況。如果一個對象想觀察另一個對象並對特定變化作出反應,則事件是適當的只要保留對父母的引用就適用於其他情況。如果您需要針對特定​​案例的建議,請提供該案例的詳細信息。

2

取決於你對緊密耦合的態度和手中的確切情況。

個人而言,我認爲委託/事件的方法是更清潔。

傳入引用意味着孩子需要了解父對象的類型?好的,你可能可以使用基類或接口,但它仍然是必需的。

委託/事件模型的好處在於,子對象只能發佈事件,任何註冊的人都會收到事件。經典觀察者模式。

0

好吧,我認爲喬恩建議事件最好是觀察其他控件的變化,這是最好的。 也可以在主用戶控件中創建屬性,然後獲取,從子控件設置它,我一直這樣做。

希望這有助於。

0

如果您擔心緊耦合問題,請考慮使用父對象的接口,該接口只公開將數據傳回的方法。

爲了防止鎖定子控件(或UI線程),您可以使用BackgroundWorker在單獨的線程中完成工作。

相關問題