0

MEFを使用して、起動時にツールを見つけてワークベンチにロードするワークベンチ/IDEスタイルのアプリケーションを構築しています。

MVVM Lightを使用して、ワークベンチと個別のツールを構築しています。私は今、ツールがお互いに、そしてワークベンチと通信できるようにしたいというポイントを持っています。

私は直接のコミュニケーションを意味するのではなく、「誰かが興味を持っているなら、ここにいくつかのデータがあります」のように、興味のあるツールがデータを取得できます。

これはC#イベントによく似ており、イベントを定義するツールからインターフェイスをエクスポートできることはわかっていますが、MVVMLightメッセンジャーを使用して通信を提供することも考えています。

ここで、人々がPrismのEventAggregatorを使用して同じことを行っていることを確認しました。また、MVVM Lightのメッセンジャーはほぼ類似しているため、使用できると思いました。

私は本当にアドバイスを求めています。誰かがMEF-MEFオブジェクトのメッセンジャーを使用したことがありますか?それを昔ながらのC#イベントで提唱していただけませんか。

4

1 に答える 1

0

ここで見ているのはメディエーターパターンです。昔ながらのC#イベントを使用して同じことを行うこともできますが、正しく実行すると、独自の種類のpub/subパターンを実装することになります。そして、あなたがそれをするつもりなら、なぜ車輪を再発明するのですか?

プリズムのEventAggregatorは、MEFが注入されたPrismフレームワークの一部であるため、使用するのが好きです。私はPrismの他の多くのものを使用しているので、これを「無料」で入手できるのは素晴らしいことです。また、コンポーネントとの緩い結合を促進し、すべての優れたメディエーター実装と同様に、イベントにサブスクライブしているオブジェクトを破棄するときに回避する必要があるメモリの問題を防ぐ弱いイベントパターンで実装されます。

価値のあるものとして、私は以前MVVM Lightを使用していましたが、Prismはより成熟したフレームワークであり、より優れたドキュメント、例、およびより多くのユーザーベースから学ぶことができました。それは本当に私の意見です-私はMVVMライトを愛するたくさんの人々を知っています。それらの両方で遊んで、あなたを幸せにするものを選んでください:)

于 2013-02-12T07:39:19.727 に答える