2010-05-24 9 views
13

Estaba leyendo en alguna parte que con MEF puedo simplemente colocar un dll en un directorio y mi aplicación (con algo de magia MEF) podrá leerlo y ejecutar el código en él? Esperemos que solo las clases que implementan una interfaz que defino ??Ayuda para empezar con MEF

¿Alguien me puede ayudar a ponerme en marcha, con algunos enlaces tal vez por mi problema.

He mirado a través de algunos de los documentos, pero nada parece ser lo que busco y su difícil cuando no sé exactamente qué buscar en ...

Thx S

+1

Lo que MEF hace y lo que hacen los marcos DI no son exactamente lo mismo (aunque hay superposición, pero es posible que su pregunta no esté etiquetada correctamente). Hay un buen artículo sobre cómo hacer que se pongan agradables aquí http://blogs.msdn.com/nblumhardt/archive/2009/03/16/hosting-mef-extensions-in-an-ioc-container.aspx – R0MANARMY

Respuesta

6

Aquí hay dos puestos MEF "Getting Started" por Brad Abrams:

Tenga en cuenta que estos se escribieron utilizando versiones de vista previa de MEF, por lo que ha habido algunos cambios. Por ejemplo, AttributedAssemblyCatalog se ha renombrado como AssemblyCatalog, AggregatingComposablePartCatalog ahora es AggregatingCatalog, y PackageCatalog en Silverlight ahora es DeploymentCatalog, y ha tenido algunos otros cambios de API.

+2

Excelente. ..Gracias. Para cualquier otra persona, es posible que este enlace le resulte más útil ... está un poco más actualizado. http://goo.gl/4jpD – SteveCl

2

Usted puede apoyar 'recomposición' marcando las importaciones como:

[ImportMany(AllowRecomposition=true)] 
public IMessageSender[] Senders { get; set; } 

Sin embargo, a partir de lo que puedo decir esto no carga automáticamente los ensamblajes. La versión de MEF que llegó a .NET 4 (y creo que Preview 9 en el complejo) no parece cargar los ensambles automáticamente. No estoy seguro de si este comportamiento cambió a medida que se desarrolló el MEF.

Usted tendrá que añadir un FileSystemWatcher y llamar a Refresh() en, por ejemplo, la DirectoryCatalog y escuchar por uno o más de estos eventos:

catalog.Changed += new EventHandler<ComposablePartCatalogChangeEventArgs>(Catalog_Changed); 
container.ExportsChanged += new EventHandler<ExportsChangeEventArgs>(Container_ExportsChanged); 
directoryCat.Changed += new EventHandler<ComposablePartCatalogChangeEventArgs>(dCat_Changed); 
1

Aquí es una demo application construido con WPF, MVVM, y el MEF (tanto para la composición como para la extensibilidad).

1

This article proporciona una un enfoque genérico fácil de trabajar con MEF:

  1. la forma más sencilla (genéricamente) usar MEF.
  2. Cómo utilizar MEF totalmente flojo también para el proceso de carga Dll.