2010-11-17 6 views

Respuesta

7

Si puede permitirse usar .NET 4.5 (lo que significa que deja caer el soporte de Windows XP), ahora puede usar MEF's attribute-less registration aka Convention Model.

En .NET4 o versiones anteriores de vista previa de MEF esto no se admite de fábrica, pero MEF aún se puede ampliar creando sus propias implementaciones de ExportProvider o ComposablePartCatalog.

La MEF Contrib Fluent Definition Provider es una implementación tal que le permite registrar importaciones y exportaciones mediante llamadas a métodos.

El MEF Contrib Configurable Definition Provide r es otro que le permite configurar las importaciones y exportaciones en un archivo XML.

Otra opción más es realizar el registro con Autofac y luego usar su MEF integration para que los componentes de autofac estén disponibles para MEF.

+0

Gracias por esta lista concisa de opciones. –

+0

@WimCoenen Creo que para MEF 2 su propio artículo podría ser mejor: http://mindinthewater.blogspot.nl/2011/03/mef-attribute-less-registration.html –

+0

@Zidad: Gracias por el comentario, he actualizó esta (vieja) respuesta. –

1

No estoy 100% seguro, pero no creo que eso sea posible con MEF. Sin embargo, un patrón para usar para proporcionar un comportamiento similar es el patrón de fábrica/proveedor.

interface IData {} 

interface IDataProvider { 
    IData Data { get; set; } 
} 

[Export(IDataProvider)] 
class DataProvider : IDataProvider { 
    public IData { get; set; } 
} 

Usted puede utilizar este modelo para actualizar dinámicamente la implementación de IData al valor que desea usar.

Cuestiones relacionadas