Я пишу инструмент, который взаимодействует с несколькими системами контроля версий, либо subversion, либо clearcase, и имеет различные утилиты, которые можно подключить к нему.Хотя я использовал MEF для загрузки провайдеров контроля версий и утилит, оба из которых имеют определенные интерфейсы для них.
Я начал использовать MEF для этого.Но если загрузка какого-либо плагина не удалась (на половине моих клиентских компьютеров привязки ClearCase COM не будут присутствовать, поэтому загрузка не удастся, а на другой половине SVN не будет установлена, поэтому плагин SVN не будет загружаться),MEF выдает исключение и плагин не работает;Я надеялся, что остальные плагины загрузятся.
[ImportMany(AllowRecomposition = true)]
public IEnumerable<IVersionControl> RegisteredProviders { get; private set; }
Вместо этого, если какой-либо провайдер не сможет создать себя, тогда RegisteredProviders
будет нулевым.
Есть ли простой способнастроить MEF для достижения этой цели (сообщать об исключениях, но загружать другие экземпляры), или мне нужно изменить интерфейс, чтобы отложить ошибку инициализации до тех пор, пока MEF не создаст экземпляры объектов?