私はネットワーク接続でリッスンするアプリケーションを作成しています。データが到着したときに返信し、受信データによっては返信前にユーザーに問い合わせる必要があります(ダイアログを表示)。Model-View-Viewmodelアーキテクチャでモデルのメソッドの途中からユーザー入力をきれいに取得するにはどうすればいいですか?
MV-VMアーキテクチャーでこれを正しく行う方法がわかりません:受信データに基づいてGUIを更新する必要がある場合は、イベントと観測可能なコレクションへのバインドがうまくいきます。返信する前にユーザーですか?
また、私の返信アルゴリズムを1か所にし、複数のコールバックに分かれていて、不明瞭な 'who-calls-who'の責任を持たせたいので、それを同期してやりたい。
単に、
HandleMessage(Message msg){
string reply;
if (msg.type == 1) {
reply = ...
} else {
string question = msg...
reply = ShowModalDialog(question); // MVVM violation!
}
sender.Send(reply);
}
のようなものが、モデルは再利用可能とテスト可能にする必要があるように私は、モデルからビューまたはのviewmodelを呼び出すにしたくない - 私はすべてのテスト実行中にダイアログをポップしたくありません、それはMVVMの違反になります!非同期であるため、イベントはありません(私が知る限り単方向であり、イベント起点への応答を得るための後方チャネルがありません)。
これは実行可能ですか?これは私がいくつかのテスト駆動開発者伝播者に尋ねた質問です。これまでのところ、私は実用的な答えを得られませんでした。しかし、処理の途中で追加入力が必要なことはかなり一般的です。
ありがとうございます!
EDIT:これはアプリケーションロジックなのでモデルにはっきりと属していますが、この場合でも実際にはビジネスの途中でユーザーの入力が必要な場合の解決方法を知りたいモデル内の論理ルーチン。
+1それは私がしたよりもはるかに優れて説明します。 –
ありがとう、これはクリーンなソリューションのように聞こえる、私はリンクを読んでみましょう(それらのおかげで!) –