Quiero usar MEF como DI para mi proyecto. Tengo 1 proyecto y todas las clases que deben componerse residen allí (comparten una interfaz). Ahora quiero crear uno de ellos especificando un valor de metadato. He aquí las definiciones:MEF GetExportedValue con los metadatos
public interface IGatewayResponseReader
{
object Read(string msg);
}
[Export(typeof(IGatewayResponseReader))]
[ExportMetadata(G3Reader.META_KEY, "value1")]
public class TestReader1 : IGatewayResponseReader
{
...
}
[Export(typeof(IGatewayResponseReader))]
[ExportMetadata(G3Reader.META_KEY, "value2")]
public class TestReader2 : IGatewayResponseReader
{
...
}
Ahora quiero crear una instancia de TestReader1 a través del MEF, pero no saben cómo va a filtrar a través de metadatos CompositionContainer. Quiero algo como
Container.GetExportedValue<IGatewayResponseReader>();
Pero para especificar los metadatos para elegir qué instancia de clase crear.
Su ayuda es muy apreciada.
Gracias.
Gracias Phil, aprecio su ayuda :). Maldita sea, lo intenté de esa manera y no funcionó porque no sabía sobre MetadataAttribute :(Pasé 5 horas tratando de resolverlo. Gracias – Davita