none
Asp.Net MVC ed Autofac (IoC) RRS feed

  • Domanda

  • Salve a tutti, vengo al quesito :)

    Sto utilizzando Autofac per iniettare le dipendenze in un'applicazione Asp.Net MVC4, ho quindi dichiarato il ContainerBuilder registrato le dipendenze e

    ContainerBuilder builder = new ContainerBuilder(); builder.RegisterType<FileSystems.RootFolder>().As<FileSystems.IRootFolder>().SingleInstance(); builder.RegisterType<MyRazorViewEngine>().As<System.Web.Mvc.IViewEngine>().SingleInstance();

    ....

    .... builder.RegisterControllers(executingAssembly); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

    Fin qui tutto sembra funzionare e nei vari controller vengono automaticamente iniettate sul costruttore le eventuali dipendenze come mi aspettavo..

    Ho poi effettuato una modifica per la necessità di caricare da alcuni assembly esterni dei componenti come se fossero plugin (un po' come fanno applicazioni come orchard, nopcommerce, ecc.. ovviamente una semplificazione di ciò che fanno loro).

    Ho quindi aggiunto questo codice prima di chiamare la build del contaier

    var files = System.IO.Directory.EnumerateFiles(System.Web.Hosting.HostingEnvironment.MapPath("/Plugins/"), "*.dll"); foreach (var file in files) { Assembly assembly = Assembly.LoadFile(file); builder.RegisterAssemblyTypes(assembly).As<IDependency>();

    builder.RegisterController(assembly);

    }

    Ma le dipendenze esterne non vengono risolte.. in primis pare che per far funzionare in parte la cosa devo inserire i compilati nella directory bin dell'applicazione in modo che vengano caricati nell'AppDomain mentre per le interfacce presenti sui costruttori dei controller non ho trovato alcun modo per farli risolvere... eppure se chiamo una Resolve sul container dopo l'inizializzazione la dipendenza risulta registrata correttamente...

    Dove sbaglio??!!? :)

    Spero di non essere stato confusionario..

    Grazie mille a chi vorrà rispondere.



    • Modificato Antipatico lunedì 28 gennaio 2013 18:27
    lunedì 28 gennaio 2013 17:30