2010-11-17 36 views

Répondre

7

Si vous pouvez vous permettre d'utiliser .NET 4.5 (ce qui signifie abandonner la prise en charge de Windows XP), vous pouvez maintenant utiliser le attribute-less registration de MEF, également appelé Convention Model. Dans .NET4 ou versions antérieures d'aperçu MEF, ceci n'est pas pris en charge, mais MEF peut être étendu en créant vos propres implémentations de ExportProvider ou ComposablePartCatalog.

Le MEF Contrib Fluent Definition Provider est une telle implémentation qui vous permet d'enregistrer les importations et exportations par des appels de méthode.

Le MEF Contrib Configurable Definition Provide est un autre qui vous permet de configurer les importations et exportations dans un fichier XML.

Encore une autre option est de faire l'enregistrement avec Autofac et ensuite utiliser son MEF integration pour rendre les composants autofac disponibles pour MEF.

+0

Merci pour cette liste concise d'options. –

+0

@WimCoenen Je pense que pour MEF 2 votre propre article pourrait être mieux: http://mindinthewater.blogspot.nl/2011/03/mef-attribute-less-registration.html –

+0

@Zidad: Merci pour la remarque, j'ai mis à jour cette (ancienne) réponse. –

1

Je ne suis pas sûr à 100% mais je ne pense pas que ce soit possible avec MEF. Un modèle à utiliser pour fournir un comportement similaire est le modèle usine/fournisseur.

interface IData {} 

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

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

Vous pouvez utiliser ce modèle pour mettre à jour dynamiquement la mise en œuvre de IData à la valeur que vous souhaitez utiliser.