Ejemplo n.º 1
0
        //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);
        }
Ejemplo n.º 2
0
        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;
        }