Il existe plusieurs exemples d'utilisation de MEF pour insérer des packages contrôleur/vue entiers dans une application MVC, mais je n'en ai pas trouvé, utilisant MEF pour greffer des parties fonctionnelles utilisées par d'autres contrôleurs.Importation de modules MEF dans les contrôleurs MVC
Par exemple, pensez à un NewsService avec une interface simple comme
interface INewsService
{
List<NewsItem> GetAllNews();
}
qui obtient nouvelles partout où il veut, et les renvoie dans une liste des bulletins d'informations. Ma page devrait charger un INewsService exporté et montrer les nouvelles sur la page.
Mais il y a le problème. Je ne peux pas simplement utiliser [Importer] dans les contrôleurs, car ils sont créés juste quand ils sont nécessaires.
Edit: (. Les importer à la classe principale MVCApplication ne fonctionne pas, becouse je ne peux pas y accéder à partir des contrôleurs) Je pense que je l'ai trouvé un moyen d'accéder à l'application principale via HttpContext.ApplicationInstance. Mais l'objet Service dans cette instance est null bien qu'il a été créé avec succès dans la méthode Application_Start(). Une idée pourquoi? Alors, comment puis-je accéder au NewsService à partir d'un contrôleur?
Merci à l'avance, Marques
Je n'aime pas la façon d'ajouter un ControllerFactory personnalisé, mais il semble que la seule bonne solution à ce jour. – Marks