2012-01-13 6 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のメッセンジャー機能をご覧ください。それは基本的にCaleb Vearが提案したようなイベントアグリゲーターです。 MVVM Lightの主な目的は、MVVMパターンを円滑にすることですが、Messengerの機能は、必要なだけの機能を使用することができます。