次の 3 つのモジュールから構成されるアプリケーションがあります。
- 検索 (オブジェクトを検索する)
- リスト(検索結果を表示するため)
- Painter (オブジェクトを編集できるようにするため) - このモジュールは常に読み込まれるわけではありません
(各オブジェクトは、ペインターで編集できる図です)。
ペインターでオブジェクトを開くと、すでにペインターにあるオブジェクトに追加され、移動したり変更したりできます。
モジュール間の通信に EventAggregator に似たオブジェクトを使用しています。たとえば、検索結果を表示するには、List モジュールによってキャッチされる "ShowList" イベントを発行します (これが最善の方法かどうかはわかりません。より良いアイデアがある場合はコメントしてください...)。
検索モジュールの機能の 1 つは、ペインタで選択されたオブジェクトを取得することを必要とします (ペインタが利用可能な場合)。
私はこれらの解決策を考えました:
ペインタで選択されたオブジェクトが変更されるたびに、「PainterSelectedObjectChanged」イベントが発行されます。このイベントは検索モジュールによって捕捉され、後で使用するために保存されます。
選択されたオブジェクトが検索モジュールによって必要とされると、ペインタ モジュールによってキャッチされる「RequestingPainterSelectedObject」イベントが発行されます。次に、ペインタ モジュールは EventArgs オブジェクトに「SelectedObject」プロパティを設定します。パブリッシュが完了し、検索モジュールに戻ると、ペインタが選択したオブジェクトが EventArgs オブジェクトに含まれます。
どう思いますか?これを行う正しい方法は何ですか?