Sto provando a creare il modulo MVC ASP.NET utilizzando MEF. Anche se finora non ho avuto problemi con MEF senza MVC, quando si tratta di esportare i controller ho alcune difficoltà.ASP.NET MVC 4.0 Controller e MEF, come riunire questi due elementi?
Ho utilizzato questo approccio come esempio http://kennytordeur.blogspot.de/2012/08/mef-in-aspnet-mvc-4-and-webapi.html L'ho reso più complesso introducendo una DLL esterna, che conteneva un controller. Ma se seguo l'idea di Kenny, allora ho bisogno di avere un'interfaccia comune (come IMyTest nel suo esempio), tuttavia, poiché ho in programma di avere un numero di controller, significherebbe che avrò bisogno di troppe interfacce. E alla fine, sembra che io riutilizzi i metodi interni dei controller, invece di interi controllori.
Ho trovato una domanda qui How to integrate MEF with ASP.NET MVC 4 and ASP.NET Web API, che conteneva alcuni esempi di codice, dove vedo l'immagine simile - _contactRepository di un'interfaccia IContactRepository viene importata e quindi riutilizzata all'interno di una vista.
Ecco perché la mia domanda è, è normale esportare l'intero controller, senza utilizzare le interfacce? E come farlo?
Ho trovato la connessione tra MEF e ASP.NET piuttosto confusa, inizialmente mi sembra che ci siano una serie di esempi in Internet, ma quando guardo più in profondità, molti di loro sono obsoleti e non pratici o troppo primitivi per vedere come può essere applicato a progetti più grandi.
Grazie!
Morten, grazie per la risposta! ho capito bene, che nella tua soluzione principale usi HomeController come qualsiasi altro controller? O hai bisogno di dichiararlo da qualche parte nell'applicazione principale? E cosa fa la classe ControllerCore? – Anelook
ControllerCore è solo un controller di base: è possibile vedere che il costruttore richiama una classe base, in cui i parametri vengono utilizzati/memorizzati, ma è possibile utilizzarli direttamente nel HomeController senza avere una classe base. Il codice di configurazione carica MVC per utilizzare MEF quando crea controller, quindi non è necessario alcun codice aggiuntivo da nessuna parte (tranne la chiamata al metodo Configure in Application_Start, come menzionato nella risposta). –