ALE.Http.Route.TryExecute C# (CSharp) Method

TryExecute() public method

public TryExecute ( IContext context, System.Action next ) : bool
context IContext
next System.Action
return bool
        public bool TryExecute(IContext context, Action next)
        {
            var req = context.Request;
            var res = context.Response;
            var path = req.Url.PathAndQuery;
            var isMatch = PathTester.IsMatch(path);
            if (isMatch)
            {
                var match = PathTester.Match(path);
                var args = new string[Parameters.Length];
                for (int i = 0; i < Parameters.Length; i++)
                {
                    var parameterName = Parameters[i];
                    args[i] = Uri.UnescapeDataString(match.Groups[parameterName].Value);
                }
                var controller = (IController)Activator.CreateInstance(ControllerType);
                controller.Request = req;
                controller.Response = res;
                controller.Context = context;
                var typedController = Convert.ChangeType(controller, ControllerType);
                var typedArgs = new object[args.Length + 1];
                typedArgs[0] = next;
                for (int i = 0; i < Parameters.Length; i++)
                {
                    var paramKey = Parameters[i];
                    var arg = args[i];
                    var parameter = HandlerParameters[paramKey];
                    typedArgs[i + 1] = Convert.ChangeType(arg, parameter.ParameterType);
                }
                HandlerInfo.Invoke(typedController, typedArgs);
            }
            return isMatch;
        }