MEF - Изменить выполнение, если один плагин не работает - PullRequest
2 голосов
/ 14 марта 2010

Я использую MEF для системы плагинов для моего приложения. Поток идет так:

  1. Запустить все Pre -plugins
  2. Запустить все Core -plugins
  3. Запустить все Post -plugins

Например, если плагин в ядре не работает, я не хочу запускать определенные пост-плагины.

Каков наилучший способ достичь этого? Надеюсь, мой вопрос ясен, в противном случае, пожалуйста, скажите мне, и я постараюсь уточнить.

1 Ответ

1 голос
/ 14 марта 2010

Верните ваши основные плагины в интерфейс, скажем, IResult, который имеет ваши возвращаемые значения и статус ошибки. Передайте статусы ошибок в ваши плагины Post через конструктор или как часть подписи метода контракта и позвольте вашему плагину решать, работает он или нет.

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

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

...