2010-10-22 12 views
1

J'ai une application ASP.NET MVC2 qui prend en charge les plug-ins/fournisseurs de visualisation. L'interface IVisualization est définie dans un assembly commun qui est référencé à la fois par l'application ASP.NET MVC2 et par tous les fournisseurs de visualisation.La meilleure façon d'importer une collection de valeurs dans un contrôleur utilisant MEF

Dans le contrôleur de visualisation, j'ai une méthode qui renvoie toutes les visualisations applicables pour un ensemble donné de données. Pour analyser les fournisseurs disponibles, j'utilise le code suivant dans ActionMethod du contrôleur.

var catalog = new DirectoryCatalog(HttpRuntime.BinDirectory); 
var container = new CompositionContainer(catalog); 
var visualizations = container.GetExportedValues<IVisualization>(); 

Cependant, je me sens comme si je suit dans le contrôleur

[ImportMany] 
public IEnumerable<IVisualization> Visualizations { get; set; } 

alors l'importation doit se faire automatiquement. Qu'est-ce qui me manque qui empêche les importations automatiques?

De même, le code que j'utilise actuellement va-t-il tuer la mise à l'échelle du site Web?

Merci, Erick

Répondre

0

Si vous avez un contrôleur qui déclare que l'importation de propriété particulière, vous devez appeler l'un des programatically méthodes de MEF pour les satisfaire.

Certaines options sont:

container.GetExportedValues<MyController(); 
container.ComposeParts(controllerInstance); 

entre autres. J'espère que cela illustre mon point de vue.

+0

Il fait, merci. Les exemples que je regardais ont manqué cela. Merci! –