//protected override Type GetControllerType(RequestContext requestContext, string controllerName) //{ // var controllerType = base.GetControllerType(requestContext, controllerName); // if (controllerType == null) // { // var controller = _container.GetExports<IController, IControllerMetaData>().SingleOrDefault(x => x.Metadata.ControllerName == controllerName).Value; // if (controller != null) // { // return controller.GetType(); // } // } // return controllerType; //} protected override IController GetControllerInstance(RequestContext context, Type controllerType) { IController result = null; if (!AzRBootstrap.IsIntialized) { AzRBootstrap.Intialize(); ControllerBuilder.Current.SetControllerFactory(new AzRControllerFactory(AzRBootstrap.Container)); } if (controllerType == null) { return(null); } //if (controllerType == null) //{ // return base.GetControllerInstance(context, controllerType); // // return null; //} var export = _container.GetExports(typeof(IAzRController), null, controllerType.FullName).SingleOrDefault(x => x.Value.GetType() == controllerType); if (null != export) { result = export.Value as IController; } if (null != result) { _container.SatisfyImportsOnce(result); } return(result); }
public static void Register() { //var asmCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); //var container = new CompositionContainer(asmCatalog); AzRBootstrap.Intialize(); ControllerBuilder.Current.SetControllerFactory(new AzRControllerFactory(AzRBootstrap.Container)); //foreach (var assembly in AzRBootstrap.Assemblies) //{ // BuildManager.AddReferencedAssembly(assembly); //} //var dbContext = AzRBootstrap.Container.GetExportedValue<DbContext>(); //AzRBootstrap.Container.ComposeExportedValue<DbContext>(dbContext); var resolver = new AzRDependencyResolver(AzRBootstrap.Container); // Install MEF dependency resolver for MVC DependencyResolver.SetResolver(resolver); // Install MEF dependency resolver for Web API System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = resolver; }