¿Cómo se utiliza ExportFactory <T>
Soy nuevo en MEF y estoy experimentando con ExportFactory. ¿Puedo usar ExportFactory para crear una lista basada en la inserción de objetos por parte del usuario? Una muestra sería algo similar a lo que se muestra a continuación. Probablemente no entiendo el uso de ExportFactory porque durante el tiempo de ejecución recibo un error que se muestra a continuación durante la composición.
1) No se encontraron exportaciones válidas que coincidan con la restricción '((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 ")))), las exportaciones no válidas pueden haber sido rechazadas.
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()
{
}
}