2010-11-17 5 views

risposta

7

Se puoi permetterti di utilizzare .NET 4.5 (che significa lasciare cadere il supporto di Windows XP), puoi ora utilizzare MEF attribute-less registration o Convention Model.

In .NET4 o versioni precedenti di MEF questa versione non è supportata, ma è possibile estendere MEF creando le proprie implementazioni di ExportProvider o ComposablePartCatalog.

MEF Contrib Fluent Definition Provider è un'implementazione che consente di registrare le importazioni e le esportazioni tramite chiamate di metodo.

Il numero MEF Contrib Configurable Definition Provide r è un altro che consente di impostare le importazioni e le esportazioni in un file XML.

Un'altra opzione è fare la registrazione con Autofac e quindi utilizzare il suo MEF integration per rendere i componenti di autofac disponibili per MEF.

+0

Grazie per questo elenco conciso di opzioni. –

+0

@WimCoenen Penso che per MEF 2 il tuo articolo potrebbe essere migliore: http://mindinthewater.blogspot.nl/2011/03/mef-attribute-less-registration.html –

+0

@Zidad: Grazie per l'osservazione, ho aggiornato questa (vecchia) risposta. –

1

Non sono sicuro al 100% ma non penso che sia possibile fare con MEF. Un modello da utilizzare per fornire un comportamento simile è il pattern factory/provider.

interface IData {} 

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

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

È possibile utilizzare questo modello per aggiornare dinamicamente l'attuazione IData al valore che si desidera utilizzare.

Problemi correlati