Jak korzystać z ExportFactory <T>

Jestem nowym użytkownikiem MEF i eksperymentuję z ExportFactory. Czy mogę użyć ExportFactory do utworzenia listy na podstawie wstawiania obiektów przez użytkownika? Próbka byłaby podobna do pokazanej poniżej. Prawdopodobnie nie rozumiem, jak korzystać z ExportFactory, ponieważ w czasie wykonywania pojawia się błąd pokazany poniżej podczas kompozycji.

1) Nie znaleziono ważnych eksportów zgodnych z ograniczeniem ”((exportDefinition.ContractName ==" System.ComponentModel.Composition.ExportFactory (CommonLibrary.IFoo) ") AndAlso (exportDefinition.Metadata.ContainsKey (" ExportTypeIdentity ") AndAlso" System. ComponentModel.Composition.ExportFactory (CommonLibrary.IFoo) ". Równa się (exportDefinition.Metadata.get_Item (" ExportTypeIdentity "))))”, nieprawidłowy eksport mógł zostać odrzucony.

 class Program
{
    static void Main(string[] args)
    {
        Test mytest = new Test();
    }
}

public class Test : IPartImportsSatisfiedNotification
{
    [Import]
    private ExportFactory<IFoo> FooFactory { get; set; }

    public Test()
    {
        CompositionInitializer.SatisfyImports(this);
        CreateComponent("Amp");
        CreateComponent("Passive");
    }

    public void OnImportsSatisfied()
    {
        int i = 0;
    }

    public void CreateComponent(string name)
    {
        var componentExport = FooFactory.CreateExport();
        var comp = componentExport.Value;
    }
}

public interface IFoo
{
    double Name { get; set; }
}

[ExportMetadata("CompType", "Foo1")]
[Export(typeof(IFoo))]
[PartCreationPolicy(System.ComponentModel.Composition.CreationPolicy.NonShared)]
public class Foo1 : IFoo
{
    public double Name { get; set; }
    public Foo1()
    {

    }
}

[ExportMetadata("CompType", "Foo2")]
[Export(typeof(IFoo))]
[PartCreationPolicy(System.ComponentModel.Composition.CreationPolicy.NonShared)]
public class Foo2 : IFoo
{
    public double Name { get; set; }
    public Foo2()
    {
    }
}

questionAnswers(1)

yourAnswerToTheQuestion