2012-01-13 20 views
2

我有一組協作對象,並且由於關注點分離,單個負責任的原則和可測試性,我想保持此結構不變。事件在c#和silverlight中傳遞了一系列對象

我遇到的挑戰是如何最好地處理鏈上的異步事件。

這裏是我的場景:

ObjectA引用ObjectB引用ObjectC引用ObjectD。

ObjectA調用ObjectB等等,最終導致ObjectD對外部系統進行異步調用。

問題:我在尋找推薦的最佳實踐,以便如何使ObjectA進行非阻塞調用,然後通知ObjectD異步完成的結果。

我有它與傳遞和鏈接事件處理程序下層的工作,但這似乎過於複雜,我關心性能。

有關如何更好地處理此問題的任何建議?

謝謝。

回答

0

聽起來好像你可能從EventAggregator.Net之類的東西中受益。它允許您訂閱不同類型的活動,而無需擔心發佈活動的人員。換言之,ObjectA訂閱由ObjectD發佈的OperationCompleted事件,但ObjectA從未引用ObjectD或知道它存在。

0

您可以看看MVVM Light Toolkit中的Messenger功能。它基本上是一個類似於Caleb Vear所建議的事件聚合器。 MVVM Light的主要目的是促進MVVM模式,但如果您只需要這些功能,則可以使用自己的Messenger功能。