Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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# 同一事件的多个订阅者_C#_Design Patterns - Fatal编程技术网

C# 同一事件的多个订阅者

C# 同一事件的多个订阅者,c#,design-patterns,C#,Design Patterns,我正在尝试创建一个处理用户设置(一组控件)的系统。相同的设置将在两个不同的环境中执行两次,并将控制相同的逻辑和包含相同的属性。当用户在第一个设置中更改某些控件的值时,程序逻辑中会进行一些更改,另外,应更新处理第二个设置中相同属性的控件。 简单示意图: 因此,对于单个事件,似乎有两个订阅者(设置A和B)和三个侦听器(设置A和B,事件处理程序) 实现这一点的最佳方式是什么?听起来您正在寻找的是事件搅拌器模式。常用的Microsoft library Prism。获取nuget软件包,以获得一个为您

我正在尝试创建一个处理用户设置(一组控件)的系统。相同的设置将在两个不同的环境中执行两次,并将控制相同的逻辑和包含相同的属性。当用户在第一个设置中更改某些控件的值时,程序逻辑中会进行一些更改,另外,应更新处理第二个设置中相同属性的控件。 简单示意图:

因此,对于单个事件,似乎有两个订阅者(设置A和B)和三个侦听器(设置A和B,事件处理程序)


实现这一点的最佳方式是什么?

听起来您正在寻找的是事件搅拌器模式。常用的Microsoft library Prism。获取nuget软件包,以获得一个为您实现它的预先制作的类。

听起来您正处于切换到系统的边缘,但是对于3件事来说,这可能不值得付出努力。例如,请参阅。我需要的似乎是事件聚合器。感谢点对模式。将我的评论交给了一个答案。我不能使用Prism,我的目标API是.net 2.0,即2.0。这将很难正确地实现自己,因为至少需要3.0(这仍然是可行的,但如果忘记取消订阅事件管理器,内存泄漏的风险会高得多)。如果你不介意我问的话,为什么你不能把目标定在3.5?它使用与2.0相同的CLR。这是unity3d应用程序。您知道任何教程解释如何自己实现此模式吗?Unity3d可以访问.NET 3.5。此外,unity3d必须这样做,您不需要自己实现它。