4

我试图从架构和设计的角度来理解事件聚合器模式。我以前从未在 WPF 中使用过 Prism,但我正在研究它在 MSDN 上的工作原理。

在我看来,对于每个事件,用户都必须创建一个新的事件对象来扩展CompositePresentationEvent. 似乎新事件对象除了继承自那些之外没有其他功能(它通常没有自己的代码)。

例如:

A AddNewStuffEvent看起来像:

public class AddNewStuffEvent : CompositePresentationEvent<Object> {} //The end of the class

对于一个HealthChangeEvent

public class HealthChangeEvent: CompositePresentationEvent<Object> {} //The end of the class

对于一个BookFlipEvent

public class BookFlipEvent: CompositePresentationEvent<Object> {} //The end of the class

对于一个BookCloseEvent

public class BookCloseEvent: CompositePresentationEvent<Object> {} //The end of the class

BookOpenEvent对于,等的每个小事件,这可能会永远持续下去BookTearEvent。因此,在特定的命名空间文件夹中,将有大量的事件类,并且事件聚​​合器将在运行时加载所有这些事件对象. 也就是说,每个小活动都需要一个空班?这是它的工作原理吗?有什么更好的方法呢?

4

1 回答 1

3

是的,每个事件类型都需要它自己的类,你必须定义它。

似乎新事件对象除了继承自那些之外没有其他功能

目的只是为事件提供强类型。这使得编写代码来订阅它们变得更加容易。即,订阅代码可以这样写:

aggregator.GetEvent<AddNewStuffEvent>().Subscribe(Handler);

这是替代方案的一种更可取的方法,例如依赖say形式的“魔术字符串” aggregator.GetEvent("AddNewStuffEvent").Subscribe(Handler)(在编译时无法验证。

于 2012-10-21T06:25:24.440 回答