2012-04-04 12 views
0

これは、レイヤー間の通信方法について説明したquestionが見つかりました。 もう1つの側面があります。私は既存の上書きを確認します確認ボックスが欲しいUIを使用したUI BLL通信

public interface IUiCallbacks 
{ 
    void SendMessage(string message); 
    void SendException(string message, Exception ex); 
} 

public class WinFormsUiCallbacks : IUiCallbacks 
{ 
    public void SendMessage(string message) 
    { 
    MessageBox.Show(message); 
    } 

    public void SendException(string message, Exception ex) 
    { 
    MessageBox.Show(string.Format("Unfortunately, the following errror has occurred:{0}{1}", Environment.NewLine, ex.Message)); 
    } 
} 

public class OrderService 
{ 
    private IUiCallbacks _iUiCallbacks; 
    ... 
    public OrderService() { ... } 
    public OrderService(IUiCallbacks iUiCallbacks) 
    { 
    _iUiCallbacks = iUiCallbacks; 
    } 
    ... 
    public void AddOrder(Order order) 
    { 
    ... 
    if(OrderAlreadyExists(order)) 
    { 
     if(_iUiCallbacks != null) 
     _iUiCallbacks.SendMessage("The order can not be added, because it is already accepted."); 
     return; 
    } 
    ... 
    } 
    ... 
} 

代わりの情報メッセージ:私はfolowingの例に見られるようなUIにBLLからのメッセージを送信するためのインターフェイスを使用していますと仮定

注文。

この場合、確認ボックスの結果はどうすれば処理できますか?

おかげで、 アレックス

答えて

1

は、単にあなたのSendMessage戻りDialogResultを行い、すべての必要なパラメータを追加します。

public DialogResult SendMessage(string message, string caption, MessageBoxButtons buttons) 
    { 
    return MessageBox.Show(message, caption, buttons); 
    } 

をし、それを使用しています。

IUiCallbacksインターフェイスでDialogResult型を参照したくない場合は、独自のDialogResult型を作成し、WPF DialogResultとDialogResultの間のマッピング(たとえばキャスト)を行うコードを提供します。

In The Box MVVM TrainingからIDialogServiceを見ることができます - それはWPF + MVVM(BTW:MVVMは本当に学習価値のある素晴らしいパターンです)でも、必要なものはすべて既に含まれています。

関連する問題