4

ドメインに複合構造があり、リーフ ノード (Allocation) に DurationChanged イベントがあり、これをプレゼンテーション レイヤー ビュー モデル構造 (TimeSheetViewModel 内) の上部で使用したいと考えています。それに到達する。

頭に浮かぶオプションは次のとおりです。

  1. TimeSheetComposite で購読します。各コンポジットは最終的に割り当てで構成され、TimeSheetComposite は TimeSheetViewModel のモデルです。子の DurationChanged イベントが発生したときに発生する TimeSheetComposite のイベントも必要になるようです。TimeSheetViewModel は後者のイベントをサブスクライブします。
  2. DurationChanged イベントを無視し、AllocationViewModel.Amount が変更されたときに TimeSheetViewModel に到達する INPC チェーンに従います。有用な情報、特に編集前の古い Amount はありませんが、必要に応じて必要な最終結果を十分に安価に計算できます。
  3. DurationChanged イベントをDomain Eventにします。私は現在ドメイン イベントを使用していませんが、コンセプトは確かに気に入っています。Udi の記事には、それを使い始めるのに十分なコードがあるようです。
  4. DurationChanged をパブリッシュおよびサブスクライブするために、ある種の Event Aggregator をセットアップします。Domain Events と Event Aggregators の違いは何なのか、同じことを解決するための補完的なアプローチなのか代替のアプローチなのか、まだよくわかりません。ここでのRx を使用した実装は有望に見えます

この設計では、TimeSheetViewModel は Allocation.Duration がいつ変更されたかを知る必要があるため、日付ごとのすべての割り当て期間の新しい合計を取得できます。

DurationChanged 通知をどのように提供しますか?

乾杯、
ベリル

ドメイン複合構造とイベント

ここに画像の説明を入力

プレゼンテーション層の構造

ここに画像の説明を入力

4

1 に答える 1

0

私は(TimeSheet)Compositeでleafイベントをリッスンすることになり、(TimeSheet)ViewModelがリッスンしやすくするために、基本的にそこで同様のイベントを再スローしました。

DomainEvents / EventAggregatorsをよりよく理解したら、これを再検討します。

乾杯、
ベリール

于 2011-04-01T17:29:53.090 に答える