Exemplo n.º 1
0
        // Register a single controller type
        public void RegisterController(Type type, bool UseThreadPool = true)
        {
            // Create a factory for it
            var rm = new ControllerFactory(this, type, UseThreadPool);

            var cleanName = CleanControllerName(type.Name);

            // Map all it's routes
            bool any_routes = false;
            foreach (HttpControllerAttribute attr in type.GetCustomAttributes(typeof(HttpControllerAttribute), false))
            {
                if (attr.pattern != null)
                    Application.Route(attr.pattern, rm);
                else
                    Application.Route("/" + cleanName, rm);

                any_routes = true;
            }

            // Map default route if not specified by at least one attribute
            if (!any_routes)
            {
                Application.Route("/" + cleanName, rm);
            }

            // Register fully qualified name eg: "MyProject.Controllers.HomeController"
            ControllerTypes.Add(type.FullName, type);

            // Register normal name eg: "HomeController"
            ControllerTypes.Add(type.Name, type);

            // Register shortened name eg: "Home"
            if (cleanName != type.Name)
                ControllerTypes.Add(cleanName, type);
        }
Exemplo n.º 2
0
        public ActionHandler(ControllerFactory owner, MethodInfo methodInfo)
        {
            this.owner = owner;
            this.methodInfo = methodInfo;
            this.actionDelegate = ActionDelegateFactory.Create(methodInfo);
            this.useThreadPool = true;

            var utp = (UseThreadPoolAttribute)methodInfo.GetCustomAttributes(typeof(UseThreadPoolAttribute), false).FirstOrDefault();
            if (utp != null)
                this.useThreadPool = utp.UseThreadPool;
            else
                this.useThreadPool = owner.UseThreadPool;
        }