public override void OnActionExecuting(HttpActionContext actionContext) { foreach (var parameter in actionContext.ActionDescriptor.GetParameters()) { object parameterValue; if (!parameter.IsOptional && parameter.ParameterType.IsClass && actionContext.ActionArguments.TryGetValue(parameter.ParameterName, out parameterValue)) { if (parameterValue == null) { AddNullModelError(parameter, actionContext.ModelState); } else { var validators = _validatorFactory.GetValidators(parameter.ParameterType); foreach (var validator in validators) { Validate(validator, parameterValue, actionContext.ModelState); } } } } }