title: What's the right way to model an extension point that should have only one active implementation?
body: <p>I have an RCP application that uses extension points to defined various pluggable bits of functionality.</p>
  
  <p>In some cases, I've got an extension point that can logically have many implementations active at a time: say, a DataFeed point, and the application can support many of them.</p>
  
  <p>In other cases, it only makes sense for there to be a single implementation active in a running instance of the application.  I do want users to be able to switch between them though, and uninstalling/reinstalling plugins to do so is not very user friendly.</p>
  
  <p>The way I've come up with to handle this is to define the extension point as having a factory using IExecutableExtensionFactory, then each plugin has to have a preference to say whether it's active.  If it's not active, the factory returns null, and the application looks at the next option.  If none, then use some reasonable default.</p>
  
  <p>This doesn't feel quite right though, and I wonder if there's an alternate approach that I haven't hit on yet to model this type of behavior.  Anyone have ways of doing this that feel better?</p>