title: How do you use ExportFactory<T>
body: <p>I am new to MEF and experimenting with ExportFactory.  Can I use ExportFactory to create a list based on user insertion of objects?  A sample would be something similar to what is shown below.  I am probably not understanding the use of ExportFactory because during runtime I get an error shown below during composition. </p>
  
  <blockquote>
    <p>1) No valid exports were found that match the constraint
    '((exportDefinition.ContractName ==
    "System.ComponentModel.Composition.ExportFactory(CommonLibrary.IFoo)")
    AndAlso (exportDefinition.Metadata.ContainsKey("ExportTypeIdentity")
    AndAlso
    "System.ComponentModel.Composition.ExportFactory(CommonLibrary.IFoo)".Equals(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))',
    invalid exports may have been rejected.</p>
  </blockquote>
  
  <pre><code> class Program
  {
      static void Main(string[] args)
      {
          Test mytest = new Test();
      }
  }
  
  public class Test : IPartImportsSatisfiedNotification
  {
      [Import]
      private ExportFactory&lt;IFoo&gt; 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()
      {
      }
  }
  </code></pre>