示例#1
0
        /// <summary>Raises an InvalidApplicationException if this method doesn't look valid, so we won't be able to Invoke it properly.</summary>
        public virtual void ValidateMethod(MethodInfo method)
        {
            var errors = new List <string>();

            if (!method.IsStatic)
            {
                errors.Add("Must be static");
            }

            if (!typeof(Response).IsAssignableFrom(method.ReturnType))
            {
                errors.Add("Must return a Response");
            }

            var parameters = method.GetParameters();

            if (parameters.Length != 1)
            {
                errors.Add("Must take 1 parameter (Request)");
            }
            else
            if (!parameters.First().ParameterType.IsAssignableFrom(typeof(Request)))
            {
                errors.Add("Parameter must be a Request");
            }

            if (errors.Count > 0)
            {
                errors.Insert(0, Crack.FullMethodName(method) + " cannot be used as " + this.GetType().Name);
                ThrowInvalidException(string.Join(". ", errors.ToArray()) + ".");
            }
        }
示例#2
0
        /// <summary>Raises an InvalidMiddlewareException if this method doesn't look valid, so we won't be able to Invoke it properly.</summary>
        public override void ValidateMethod(MethodInfo method)
        {
            var errors = new List <string>();

            if (!method.IsStatic)
            {
                errors.Add("Must be static");
            }

            if (!typeof(Response).IsAssignableFrom(method.ReturnType))
            {
                errors.Add("Must return a Response");
            }

            var parameters = method.GetParameters();

            if (parameters.Length != 2)
            {
                errors.Add("Must take 2 parameters (Request, Application)");
            }
            else
            {
                if (!parameters.First().ParameterType.IsAssignableFrom(typeof(Request)))
                {
                    errors.Add("Parameter 1 must be a Request");
                }
                if (!parameters.Last().ParameterType.IsAssignableFrom(typeof(Application)))
                {
                    errors.Add("Parameter 2 must be an Application");
                }
            }

            if (errors.Count > 0)
            {
                errors.Insert(0, Crack.FullMethodName(method) + " cannot be used as a Middleware");
                throw new InvalidMiddlewareException(string.Join(". ", errors.ToArray()) + ".");
            }
        }