设置MEF导出和主机之间的事件

时间:2011-10-26 13:14:56

标签: mef

我是MEF的新手(现在已经玩了几个星期了。)

这是我构建的内容 - 我有一个主机(控制台应用程序)正在加载我的所有导出(我有3个不同的导出作为单独的dll)。这非常有效。请注意,这些导出都是单独的类库,甚至我的主机加载器也只是一个Windows控制台应用程序。

每个导出库都处理不同的数据提供者。

我想做的是扩展我的主界面以在其上放置一个事件,以便导出可以在数据发生变化时通知主机,并让主机相应地通知应用程序的其余部分(而不是MEF)。 / p>

我在尝试找到合适的模式来连接导出和主机之间的事件时遇到了一些麻烦。

由于

2 个答案:

答案 0 :(得分:2)

您不能只挂钩导入数据提供者的事件处理程序吗?

[ImportMany(typeof(IDataProvider))]
public IEnumerable<IDataProvider> DataProviders
{
   private get
   {
      return this.dataProviders;
   }
   set
   {
      this.dataProviders = value;
      foreach (var dataProvider in value)
      {
          dataProvider.DataChanged += HandleDataChanged;
      }
   }
}

答案 1 :(得分:0)

如果您的数据是文件夹中的文件,则可以尝试Events of FileSystemWatcher class以检测这些文件中的更改。