0

我正在开发一个 N 层 Web 应用程序(UI/Service/DAL)。

在调用某个服务时,服务层内部有时会出现需要用户通知的事件。

我应该如何将这些消息从服务层传递到 UI 层?

请务必注意,这些消息不是错误,而只是某些事件的通知。

4

1 回答 1

1

您可以通过依赖注入来实现它。假设你有一个这样的通用接口IUserNotificator

interface IUserNotificator{
    //message type can be Warning, Success, Error or Confirmation
    void Notify(string message, MessageType messageType);
}

你的服务类做这样的事情:

class Service{
    // construtor injection of IUserNotificator

    void DoSomething(){
        // doing something
        if(error){
            IUserNotificator.Notify("There is error", MessageType.Error);
        }
        else{
            IUserNotificator.Notify("Operation success", MessageType.Success);
        }
    }
}

这样,您可以在 UI 级别有不同的实现。假设您有一个 C# winform 应用程序:

class MessageBoxUserNotificator : IUserNotificator{
    void Notify(string message, MessageType messageType){
        if(messageType == MessageType.Error){ 
            MessageBox.Show(message, "Notification", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else{
            MessageBox.Show(message, "Notification");
        }
    }
}

为了获得更大的灵活性,可以在一次操作中使用多个通知器的装饰器来扩展该类。

于 2013-11-04T04:51:09.803 回答