2011-02-08 47 views
0

代表所以我在想,如果這樣的事情是可能的:理論:傳遞給構造器

我是一個程序,我要創造我的對象之一的實例。我發佈了一個讓任何訂閱者知道我即將創建對象的事件。作爲這個事件的一部分,我通過一個Hashtable,我稍後會傳遞給我的對象的構造函數。

用戶然後可以修改這個Hashtable是嗎?他們可以爲委託類型添加一個具有該類型委託的條目作爲值?一旦訂戶完成其業務,預創建事件就完成了。對Hashtable所做的更改是否會在觸發事件的對象中表示?那麼如果這個Hashtable被傳遞給一個對象的構造函數,該對象可能包含來自外部源的方法?

所以基本上 -

轉到創建對象
消防要求委託事件
使用委託的事件對象
對象的構造函數修改哈希表使用從哈希表的方法來代替自己是否存在相同類型的委託
現在對象在標準功能上運行自定義代碼

再次,我真的不知道我說的是甚至可能,或者說是有意義的。

+0

我不喜歡在許多客戶端之間傳遞可變哈希表的想法。 – ChaosPandion 2011-02-08 16:01:27

回答

1

這是可能的,但我建議不要公開發送HashSet<T>。原因是任何訂戶都可以修改HashSet<T>中的值。

相反,我不知道這裏的事件是正確的行爲。我仍然會使用代表,但我不會將它們作爲事件公開。在這裏pub/sub模式可能會更好(如果要通知的對象將通過Sub/Unsub方法傳遞委託)。

這允許您修改委託簽名,以便在您撥打電話時(而不是在HashSet<T>周圍傳遞)實施將數據值返回給您。

然後,您可以撥打GetInvocationList來獲取每個單獨的代理人,而不是隻打一個電話。然後您將循環並收集返回的值。

從這一點開始,您將適當地聚合這些值,然後將該聚合傳遞給對象的構造函數。

+0

只要我有機會,我會看看這個,謝謝。 – FlyingStreudel 2011-02-08 16:16:12

相關問題