У меня есть приложение RCP, которое использует точки расширения для определения различных подключаемых функциональных битов.
В некоторых случаях у меня есть точка расширения, которая может логически иметь много активных реализаций одновременно: скажем, точка DataFeed, и приложение может поддерживать многие из них.
В других случаях имеет смысл иметь только одну активную реализацию в работающем экземпляре приложения. Я хочу, чтобы пользователи могли переключаться между ними, а удаление / переустановка плагинов для этого не очень удобно для пользователя.
Способ, которым я пришел к этому, состоит в том, чтобы определить точку расширения как имеющую фабрику, использующую IExecutableExtensionFactory, тогда у каждого плагина должно быть предпочтение сказать, активен ли он. Если он не активен, фабрика возвращает ноль, и приложение просматривает следующую опцию. Если нет, используйте разумные значения по умолчанию.
Хотя это не совсем правильно, и мне интересно, есть ли альтернативный подход, который я еще не использовал для моделирования этого типа поведения. У кого-нибудь есть способы сделать это, чтобы чувствовать себя лучше?