2013-02-06 73 views
0

我正在構建一個工作臺/ IDE風格的應用程序,它使用MEF在啓動時定位並將工具加載到工作臺中。MEF對象之間的通信

我使用MVVM Light構建工作臺和單獨的工具。現在我已經有了一個觀點,我希望工具能夠溝通彼此和工作臺。

我不是說直接溝通,更像是「嘿,如果有人感興趣,我有一些數據」,感興趣的工具可以拿起數據。

這看起來很像C#事件,我知道我可以從定義事件的工具中導出接口,但我也想知道如何使用MVVM Light messenger來提供通信。

我在這裏看到人們使用Prism的EventAggregator來做同樣的事情,而MVVM Light的使者大致類似於我想我可以使用它。

我真的經過忠告,有沒有人使用MEF - MEF對象的使者,你會主張它在普通的舊C#事件。

回答

0

你在這裏看到的是介體模式。您可以使用普通的舊C#事件來做同樣的事情......但要做到這一點,您很可能最終實現自己的一種pub/sub模式。如果你打算這麼做,爲什麼重新發明輪子?

我喜歡使用棱鏡的EventAggregator,因爲它是用MEF注入的Prism框架的一部分。我使用Prism的很多其他東西,所以很高興爲了'免費'。它還促進了與組件的鬆散耦合,並且像所有良好的中介器實現一樣,它使用弱事件模式實現,從而防止在銷燬訂閱事件的對象時需要避免的內存問題。

對於什麼是值得的,我曾經使用MVVM Light,但是我發現Prism是一個更成熟的框架,具有更好的文檔,示例和更大的用戶羣來學習。這只是我的看法 - 我知道很多熱愛MVVM Light的人。和他們一起玩,選一個讓你開心的東西:)

+0

感謝您的回答@Nicros,我最終使用了MVVM Light的信使。我會在晚些時候看看Prism,但我有一個技術/概念證明來提供ATM,所以我有點被推遲,歡呼聲 – Darran