Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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# 使用Prism EventAggregator,就像使用字符串事件名称的旧CAB事件系统一样_C#_String_Prism_Cab_Eventaggregator - Fatal编程技术网

C# 使用Prism EventAggregator,就像使用字符串事件名称的旧CAB事件系统一样

C# 使用Prism EventAggregator,就像使用字符串事件名称的旧CAB事件系统一样,c#,string,prism,cab,eventaggregator,C#,String,Prism,Cab,Eventaggregator,我看到Prism的eventaggregator总是并且只与GetEvent一起使用,这很奇怪。我已经习惯了旧的CAB事件系统——现在使用Marlon Grech的Mediator实现——在这里我定义了字符串常量,这样我就不必创建额外的类来激发/包装数据(如果数据是简单的int或value类型) [MediatorMessageSink(MediatorMessages.AddSchoolclass, ParameterType = typeof(int))] public vo

我看到Prism的eventaggregator总是并且只与GetEvent一起使用,这很奇怪。我已经习惯了旧的CAB事件系统——现在使用Marlon Grech的Mediator实现——在这里我定义了字符串常量,这样我就不必创建额外的类来激发/包装数据(如果数据是简单的int或value类型)

[MediatorMessageSink(MediatorMessages.AddSchoolclass, ParameterType = typeof(int))]
        public void OnSchoolclassAdded(int schoolclassId)
        {
            // do stuff with schoolclassId
        }

如何使用Prismn中的eventaggregator执行相同的操作您可以声明一个用于所有聚合事件的事件类,并将字符串作为有效负载传递,但我并不推荐这种方法。Prism开发人员会发现它非常混乱


事件聚合器使用与旧CAM不同的体系结构。当我做出更改时,我也对需要一个事件对象感到不高兴。但后来我开始接受这种方法——事件对象基本上是我使用ReSharper模板生成的一行程序。我之所以如此喜欢它,是因为它为我提供了一个放置任何逻辑的地方,我可能需要将这些逻辑与活动结合起来。

事实上,它相当智能。一个设计良好的应用程序就像一块瑞士手表,每一个类别在整个组装中都充当一个齿轮。每个类都做一件事做得很好,他们都协作完成所需的工作。与旧的单片编程风格相比,它的脆弱性要小得多,维护也更容易。对于瑞士手表/刀具,您的选择是正确的。每种工具都有它的用途。对于我来说,现在的问题是什么让我更快地开发。让我问你关于CAB事件系统与prism事件聚合器的最后一件事:如果messenger执行发送/通知,在执行OnMethod之前,我必须注册某个字符串/数据类型。prism事件聚合器是否改善了这一点?实际上,我问自己如何将数据发送到打开的窗口,因为窗口后面的ViewModel是在触发数据后创建的。。。所以OnMethod永远不会被执行。我的windows有点不同。我的windows从VM获取所有信息;如果他们需要在打开时采取行动,我会让窗口订阅自己的DataContextChanged事件。设置VM时触发事件,触发窗口中的事件处理程序。事件处理程序执行任何需要的操作,从VM获取数据。通过CAB属性方法,我可以设置相同的方法来订阅多个不同的事件。希望Prism有这个。。