Comment exporter un type dans MEF comme si l'attribut d'exportation avait été appliqué à ce type?

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

Question

Je voudrais appliquer dynamiquement l'attribut d'exportation MEF à un type à l'exécution, exactement comme si le type avait un attribut d'exportation appliqué au moment de la compilation.

Y at-il un moyen simple de le faire?

Sauf que, est-il un moyen complexe pour le faire?

Était-ce utile?

La solution

Si vous pouvez vous permettre d'utiliser 4,5 .NET (ce qui signifie que les fenêtres de XP abandonner le support), vous pouvez maintenant utiliser MEF enregistrement de attributs moins alias Modèle de Convention .

Dans .NET4 ou plus tôt aperçu MEF versions, ce ne sont pas pris en charge hors de la boîte, mais peut encore être MEF étendue en créant vos propres implémentations de ExportProvider ou ComposablePartCatalog .

Le Contrib Courant Définition MEF fournisseur une telle mise en œuvre qui vous permet d'enregistrer les importations et les exportations par les appels de méthode.

Le Définition Contrib MEF Configurable Fournir r est une autre qui vous permet de mettre en place les importations et les exportations dans un fichier XML.

Une autre option est de faire l'enregistrement avec Autofac puis utiliser son intégration pour faire MEF les composants autofac disponibles au MEF.

Autres conseils

Je ne suis pas sûr à 100% mais je ne pense pas que ce soit possible de le faire avec le MEF. Un modèle à utiliser pour fournir un comportement similaire mais 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top