Настройка событий между экспортом MEF и хостом - PullRequest
2 голосов
/ 26 октября 2011

Я новичок в MEF (играю с ним уже несколько недель).

Вот то, что я построил - у меня есть хост (Консольное приложение), который загружает все мои экспорты (у меня есть 3 различных экспорта как отдельные библиотеки). Это работает очень хорошо. Обратите внимание, что все эти экспорты являются отдельными библиотеками классов, даже мой загрузчик хоста является только консольным приложением Windows.

Каждая из библиотек экспорта обрабатывает разных поставщиков данных.

То, что я хотел бы сделать, это расширить мой основной интерфейс, чтобы иметь событие для него, чтобы экспорты могли уведомлять хост, когда их данные изменились, и позволять хосту уведомлять остальную часть приложения (не MEF) соответственно.

У меня возникли проблемы с поиском подходящего шаблона для передачи событий между экспортом и хостом.

Спасибо

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Разве вы не можете просто подключить обработчик событий, куда вы импортируете своих провайдеров данных?

[ImportMany(typeof(IDataProvider))]
public IEnumerable<IDataProvider> DataProviders
{
   private get
   {
      return this.dataProviders;
   }
   set
   {
      this.dataProviders = value;
      foreach (var dataProvider in value)
      {
          dataProvider.DataChanged += HandleDataChanged;
      }
   }
}
0 голосов
/ 04 ноября 2011

Если ваши данные являются файлами в папке, вы можете попробовать События класса FileSystemWatcher , чтобы обнаружить изменения в этих файлах.

...