【问题标题】:What to use in this case: services or EventAggregator在这种情况下使用什么:服务或 EventAggregator
【发布时间】:2012-06-06 07:20:04
【问题描述】:

我在模块化 Silverlight 应用程序中偶然发现了这种特殊情况。

我需要从应用程序屏幕之一填充上下文菜单,问题是多个模块可能希望在此处添加菜单条目。

我们提出的 2 个解决方案是:

  • 使用事件聚合器并发布 ContextMenuLoadEvent,模块侦听该事件并在上下文菜单中添加菜单条目
  • 使用 IOC 容器并从模块中注册 IPopulateContextMenu 服务,然后在屏幕中获取所有 IPopulateContextMenu 服务并对其调用 Populate。

您认为最好的方法是什么?为什么?

谢谢,

【问题讨论】:

    标签: .net silverlight caliburn.micro infrastructure


    【解决方案1】:

    我认为第二种方法更接近它应该完成的方式。您不希望应用程序外壳告诉模块存在上下文菜单。如果您希望重新构想 UI 并使用不同的控件怎么办?您必须更改消息类型以及订阅该消息的所有模块。

    相反,例如使用 MEF,您可以有一个 IContextOptions 接口或类似的接口,它具有检索上下文选项集合的方法。在 MEF 发现实现此接口的每个模块后,您可以依次调用每个模块的方法来填充上下文菜单。

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2015-06-17
      • 2013-04-23
      • 1970-01-01
      • 2013-11-15
      • 2016-05-12
      • 2017-01-07
      • 2015-05-20
      • 2013-07-22
      相关资源
      最近更新 更多