我正在开发一个 N 层 Web 应用程序(UI/Service/DAL)。
在调用某个服务时,服务层内部有时会出现需要用户通知的事件。
我应该如何将这些消息从服务层传递到 UI 层?
请务必注意,这些消息不是错误,而只是某些事件的通知。
我正在开发一个 N 层 Web 应用程序(UI/Service/DAL)。
在调用某个服务时,服务层内部有时会出现需要用户通知的事件。
我应该如何将这些消息从服务层传递到 UI 层?
请务必注意,这些消息不是错误,而只是某些事件的通知。
您可以通过依赖注入来实现它。假设你有一个这样的通用接口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");
}
}
}
为了获得更大的灵活性,可以在一次操作中使用多个通知器的装饰器来扩展该类。