private MvcControllerFunction RegisterController(Type controllerType, C1FunctionAttribute attribute, IEnumerable <ParameterProfile> functionParameters)
        {
            var controllerDescriptor = new ReflectedControllerDescriptor(controllerType);

            string @namespace  = String.IsNullOrEmpty(attribute.Namespace) ? controllerDescriptor.ControllerType.Namespace : attribute.Namespace;
            string name        = String.IsNullOrEmpty(attribute.Name) ? controllerDescriptor.ControllerName : attribute.Name;
            string description = attribute.Description ?? String.Empty;

            var function = new MvcControllerFunction(controllerDescriptor, @namespace, name, description, this);

            if (functionParameters != null)
            {
                foreach (var param in functionParameters)
                {
                    function.AddParameter(param);
                }
            }

            MvcFunctionRegistry.Functions.Add(function);

            return(function);
        }
        public MvcFunctionBuilder RegisterController(Type controllerType, string functionName = null, string description = null)
        {
            string @namespace = null, name = null;

            if (functionName != null)
            {
                ParseFunctionName(functionName, out @namespace, out name);
            }

            var attribute = new C1FunctionAttribute
            {
                Namespace   = @namespace,
                Name        = name,
                Description = description
            };

            var function = RegisterController(controllerType, attribute, new List <ParameterProfile>());

            MvcFunctionProvider.Reload();

            return(new MvcFunctionBuilder(function));
        }