Ejemplo n.º 1
0
 protected virtual void AddMethodParameterValidationErrors(MethodInvocationValidationContext context)
 {
     for (var i = 0; i < context.Parameters.Length; i++)
     {
         AddMethodParameterValidationErrors(context, context.Parameters[i], context.ParameterValues[i]);
     }
 }
Ejemplo n.º 2
0
 protected virtual void ThrowValidationError(MethodInvocationValidationContext context)
 {
     throw new PlusValidationException(
               "Method arguments are not valid! See ValidationErrors for details.",
               context.Errors
               );
 }
Ejemplo n.º 3
0
        protected virtual bool IsValidationDisabled(MethodInvocationValidationContext context)
        {
            if (context.Method.IsDefined(typeof(EnableValidationAttribute), true))
            {
                return(false);
            }

            if (ReflectionHelper.GetSingleAttributeOfMemberOrDeclaringTypeOrDefault <DisableValidationAttribute>(context.Method) != null)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 4
0
        public virtual void Validate(MethodInvocationValidationContext context)
        {
            Check.NotNull(context, nameof(context));

            if (context.Parameters.IsNullOrEmpty())
            {
                return;
            }

            if (!context.Method.IsPublic)
            {
                return;
            }

            if (IsValidationDisabled(context))
            {
                return;
            }

            if (context.Parameters.Length != context.ParameterValues.Length)
            {
                throw new Exception("Method parameter count does not match with argument count!");
            }

            //todo: consider to remove this condition
            if (context.Errors.Any() && HasSingleNullArgument(context))
            {
                ThrowValidationError(context);
            }

            AddMethodParameterValidationErrors(context);

            if (context.Errors.Any())
            {
                ThrowValidationError(context);
            }
        }
Ejemplo n.º 5
0
 protected virtual bool HasSingleNullArgument(MethodInvocationValidationContext context)
 {
     return(context.Parameters.Length == 1 && context.ParameterValues[0] == null);
 }