我有一个模块化的应用程序。每个模块都是解决方案中的一个单独项目,模块之间不能相互引用。我想添加一个系统,其中一个模块可以订阅其他模块的事件。
例如说我有一个博客模块和一个菜单模块。当我在博客模块中删除一篇文章时,我也想在菜单模块中删除相应的菜单项。
如果你能帮忙,我将不胜感激。如果您需要更多信息,请告诉我,因为我很乐意提供。谢谢
让模块将它们的事件发布到某种类型的全局事件队列中。该队列中的事件消息应该有一些标记,指示事件源自的模块。
任何对另一个模块的事件感兴趣的模块都可以订阅全局事件分配器,从那里它将接收
- 所有事件,因此它必须根据标记过滤自己,或者
- 只有来自有限模块集的事件,这些模块的ID必须在订阅全局事件分发服务器时传递
我建议您使用Prism的EventAggreator,它非常适合您的场景。