Cómo exportar un tipo en el MEF como si el atributo de exportación se había aplicado a ese tipo?

StackOverflow https://stackoverflow.com/questions/4209603

Pregunta

Me gustaría aplicar dinámicamente el atributo MEF Exportar a un tipo en tiempo de ejecución, exactamente como si el tipo había tenido un atributo de exportación aplicado en tiempo de compilación.

¿Hay una manera simple de hacer esto?

Aparte de eso, hay una manera compleja para hacer esto?

¿Fue útil?

Solución

Si usted puede permitirse el uso de .NET 4.5 (que significa el abandono del soporte de Windows XP), ahora se puede utilizar de MEF registro de atributos menos alias Modelo de Convenio .

En .NET4 o anteriores versiones preliminares del MEF Esto no es compatible fuera de la caja, pero todavía MEF puede ser ampliado mediante la creación de sus propias implementaciones de ExportProvider o ComposablePartCatalog .

El href="http://mefcontrib.codeplex.com/wikipage?title=Provider%20Model%20Fluent%20Definition%20Provider" rel="nofollow noreferrer"> Proveedor Definición es una implementación de este tipo que le permite registrar las importaciones y exportaciones de llamadas a métodos.

El MEF Contrib configurable Definición Proporcionar r es otra que le permite configurar las importaciones y exportaciones en un archivo XML.

Sin embargo, otra opción es hacer el registro en Autofac y el uso a continuación, su MEF integración para hacer los componentes autofac disponibles al MEF.

Otros consejos

No estoy 100% seguro, pero no creo que eso es posible que ver con el MEF. Un patrón a utilizar para proporcionar un comportamiento similar, aunque es el patrón de la fábrica / proveedor.

interface IData {} 

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

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top