Robust C# Plugin System

Posted by Pete Kirkham on Stack Overflow See other posts from Stack Overflow or by Pete Kirkham
Published on 2010-05-22T13:51:45Z Indexed on 2010/05/23 8:30 UTC
Read the original article Hit count: 373

Filed under:
|
|

I am writing a tool which communicates with more than one version control system, either subversion or clearcase, and has various utilities which can be plugged into it. I though of using MEF to load the version control providers, and utiilities, both of which have interfaces definied for them.

I've started to use MEF for this. But if loading any plugin fails (on half my clients machines, the ClearCase COM bindings won't be present, so loading will fail, on the other half SVN won't be installed, so the SVN plugin won't load) though, MEF throws an exception and no plugin works; I was hoping that the rest of the plugins would load.

    [ImportMany(AllowRecomposition = true)]
    public IEnumerable<IVersionControl> RegisteredProviders { get; private set; }

Instead, if any providers fail to construct themselves, then RegisteredProviders is null.

Is there a simple way of configuring MEF to achieve this (reporting exceptions but loading other instances), or do I have to change the interface to delay their intialisation failure until after MEF has instantiated the objects?

© Stack Overflow or respective owner

Related posts about c#

Related posts about plugin