MEF, por que duplicatas idênticas de um e mesmo plugin exportado foram criados?

(1) Usando o código abaixo eu recebo exatamente 2 itens em meus contêineres de um único plugin exportado e me pergunto por que:

(2) Pergunta adicional que eu realmente não posso implementar: Como posso estender a estrutura para lidar com diferentes tipos de plug-in (como ter várias importações de diferentes tipos ou uma importação que armazena todos os plug-ins em um IEnumerable dinâmico ou mais). Eu quero fornecer na minha classe wrapper estática um método genérico que retorna o plugin descoberto como uma função do tipo e meta-dados correspondentes.

O plugin exportado (que reside em uma dll separada e cuja localização é apontada quando oDirectoryCatalog É construído.

[Export(typeof(IPlugin))] //<---- If this line is commented out then only one item is imported (why?)
[PluginAttribute(typeof(StrategyPlugin_Test1), "StrategyPlugin", "Plugin1")]
public class StrategyPlugin_Test1 : IPlugin
{
    public void DoSomething()
    {
        Console.WriteLine("I do something");
    }
}

O código a seguir define os metadados e importações fortemente tipificados, bem como uma classe estática que executa as funções do MEF e deve conter os plug-ins descobertos:

[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class PluginAttribute : ExportAttribute
{
    public Type PluginType { get; set; }
    public string PluginGroupName { get; set; }
    public string PluginName { get; set; }

    public PluginAttribute(Type pluginType, string pluginGroupName, string pluginName) : base(typeof(IPlugin))
    {
        PluginType = pluginType;
        PluginGroupName = pluginGroupName;
        PluginName = pluginName;
    }
}

public interface IPluginAttribute
{
    Type PluginType { get; }
    string PluginGroupName { get; }
    string PluginName { get; }
}

public interface IPlugin
{
    void DoSomething();
}

public class PluginDefinition
{
    [ImportMany(typeof(IPlugin))]
    public IEnumerable<Lazy<IPlugin, IPluginAttribute>> Plugins { get; set; }

    public PluginDefinition()
    {

    }
}

Aqui a classe estática que envolve algumas das principais coisas do MEF:

public static class PluginManager
{
    private static PluginDefinition PluginDefinitions { get; set; }

    static PluginManager()
    {}

    public static void Configure(PluginDefinition pluginDefinitions, IEnumerable<string> pluginDirectories)
    {
        AggregateCatalog aggregateCatalog = new AggregateCatalog(new DirectoryCatalog(pluginDirectories.FirstOrDefault()));
        CompositionContainer container = new CompositionContainer(aggregateCatalog);
        container.ComposeParts(pluginDefinitions);

        //store plugin definition
        PluginDefinitions = pluginDefinitions;


    }

    public static T GetPlugin<T>(string pluginName, string pluginGroupName) where T : class
    {
        //how to implement this given type of T could be any of the plugin types ...
        //...provided for in an extended PluginDefinition class?

        return null;
    }

}

questionAnswers(1)

yourAnswerToTheQuestion