C#类通信设计问题

时间:2010-07-27 08:21:51

标签: c# events class communication

我对此方案有设计问题: 假设您有一个表单,其中包含许多要填充的网站,让我们将每个网站称为插件。 在其他类中,我创建了一个PluginManager类,它可以获取所有插件的证据并提供一些功能和属性:

class PluginManager
{
  ...
  BasePlugin CurrentPlugin {get;set;}
  IEnumerable<BasePlugin> OpenedPlugins {}
  bool SetPlugin() {..}
  ...
}

class BasePlugin {}
class MyPlugin : BasePlugin {}

在其他方面,它处理显示所选插件/网站

到目前为止,我从未需要在2个或更多插件之间进行通信。现在我做了,我想问你,你会怎么做。

我的意见是将Event添加到BasePlugin类并在PluginsManager类中处理它,以某种方式,提升Event的插件将提供EventArgs应该受影响的所有其他插件的类型以及指向应该执行的方法的delegates列表。

你知道吗?谢谢!

2 个答案:

答案 0 :(得分:2)

查看"Chain Of Responsibility" Pattern。该插件调用管理器从任何地方获取一些信息。管理器要求每个插件将信息放入提供的接口。 (什么是Visitor Pattern)。

电贺 FLO

答案 1 :(得分:1)

对我来说听起来像是Mediator Pattern(有关C#代码的说明,另请参阅here。)

中介类处理其他类之间的通信。您的PlugInManager类将具有私有Mediator实例,并且所有插件都将向调解器注册以接收通信。

可能有101种方法可以做到这一点,所以期待各种答案。