Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用IOC和.net处理用户界面反馈_C#_.net_Vb.net_Inversion Of Control_Unity Container - Fatal编程技术网

C# 如何使用IOC和.net处理用户界面反馈

C# 如何使用IOC和.net处理用户界面反馈,c#,.net,vb.net,inversion-of-control,unity-container,C#,.net,Vb.net,Inversion Of Control,Unity Container,在一个测试项目中,我一直在与Unity和IOC打交道,并开始掌握窍门,但有一个领域让我卡住了。我的应用程序(由于其他限制,Winforms)有一个控件,该控件向用户提供有关正在发生的事情的消息反馈—“我正在这样做”,“这是在检查文件ABC”,“此操作已完成”等。这是一天结束时的一个简单字符串列表,但它允许用户查看已完成的操作,并获取关于可能是一些冗长业务流程的更新 目前,我通过使用事件聚合器来实现这一点,该聚合器侦听正在发布的“MessageEvent”,并在发生这种情况时通知视图。这一切都可以

在一个测试项目中,我一直在与Unity和IOC打交道,并开始掌握窍门,但有一个领域让我卡住了。我的应用程序(由于其他限制,Winforms)有一个控件,该控件向用户提供有关正在发生的事情的消息反馈—“我正在这样做”,“这是在检查文件ABC”,“此操作已完成”等。这是一天结束时的一个简单字符串列表,但它允许用户查看已完成的操作,并获取关于可能是一些冗长业务流程的更新

目前,我通过使用事件聚合器来实现这一点,该聚合器侦听正在发布的“MessageEvent”,并在发生这种情况时通知视图。这一切都可以很好地工作,但有一个缺点,即所有对象都充斥着发布这些消息的代码,并且需要将事件聚合器注入到几乎每个对象中。它还打破了单一责任规则,因为每个对象都有其主要角色以及UI消息反馈

玩过拦截之后,我可以创建一个简单的日志行为,它工作得很好。但是,这不适用于UI反馈,因为UI反馈需要更友好地表达用户。显示关于调用了什么方法的信息对用户来说毫无意义

我一直在读关于交叉关注点(比如日志记录)的文章,但我觉得UI反馈不是其中之一?然而,这也不是每个班级都应该乱扔的东西

我怀疑在UI反馈包装器中封装类的装饰器模式可能是正确的方向?但是每次我都会创建一个定制的包装,因为反馈信息需要不同

有没有一种公认的方法来处理这种情况?任何轻推都将不胜感激