2009-06-24 7 views
11

Tengo un escenario donde tengo que exportar desde mi instancia de CompositionContainer, pero solo tengo un tipo para trabajar; No sé el tipo en el momento de la compilación, por lo tanto, no puedo recuperar el objeto exportado de la manera genérica normal.Obteniendo una exportación desde un contenedor MEF dado solo una instancia de Tipo

Normalmente se podría hacer esto:

_container.GetExportedObject<IMyType>(); 

Pero en mi caso, tengo esto:

Type someType = ... ; 
_container.HowDoIGetTheExport(someType); 

¿Alguna idea?

Respuesta

20

encontrado la respuesta:

var export = _container.GetExports(someType, null, null).FirstOrDefault(); 
+0

Sí, ese es el método central que utilizan la mayoría de las sobrecargas genéricas, por lo que es la mejor forma de obtenerlo. –

+7

No olvides que lo que buscas está en export.Value – Sam

1

crear la llamada de forma dinámica utilizando Type.MakeGeneric .....

http://geekswithblogs.net/marcel/archive/2007/03/24/109722.aspx

+1

Eso no me ayuda llamar a un método genérico en el envase. .. No creo que hayas leído mi pregunta correctamente. –

+0

Veo que tiene una respuesta específica, excelente. Mi respuesta es más general en el sentido de que desde un Tipo puede construir una llamada a un método genérico en tiempo de ejecución. Usamos esto para construir llamadas donde solo se conocen las interfaces en tiempo de compilación, pero las instancias en ejecución se pueden alimentar desde fuentes externas. –

Cuestiones relacionadas