public ReflectionBasedValidator(IValidatorFactory validatorFactory)
        {
            if (validatorFactory == null)
            {
                throw new ArgumentNullException(nameof(validatorFactory));
            }

            foreach (var property in typeof(T).GetProperties( ))
            {
                if (!property.CanRead)
                {
                    continue;
                }

                var validator = validatorFactory.GetValidator(property.PropertyType);
                if (validator == null)
                {
                    continue;
                }

                var rule = new PropertyRule(property,
                                            NonGenericExpression(property).Compile( ),
                                            GenericExpression(property),
                                            () => ValidatorOptions.Global.CascadeMode,
                                            property.PropertyType,
                                            typeof(T));

                var adaptorType = typeof(ChildValidatorAdaptor <, >).MakeGenericType(typeof(T), property.PropertyType);

                rule.AddValidator((IPropertyValidator)Activator.CreateInstance(adaptorType, validator, validator.GetType( )));

                AddRule(rule);
            }
        }
Exemplo n.º 2
0
        /* Note:
         *   > ValidationFailure.ErrorMessage displays a user-friendly property name (generated by PropertyRule.GetDisplayName)
         *   > ValidationFailure.PropertyName represents the technical property name (generated by PropertyRule.BuildPropertyName)
         */

        public override void SetUp()
        {
            base.SetUp();

            _propertyRule = PropertyRule.Create(ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.LastName));
            _propertyRule.AddValidator(new NotNullValidator());
            _customer = new Customer();
        }
Exemplo n.º 3
0
        public void SetUp()
        {
            _defaultMessageEvaluatorMock       = MockRepository.GenerateStrictMock <IDefaultMessageEvaluator>();
            _validatorGlobalizationServiceMock = MockRepository.GenerateStrictMock <IErrorMessageGlobalizationService>();

            _validator1          = new NotNullValidator();
            _errorMessageSource1 = _validator1.ErrorMessageSource;
            _validator2          = new NotEmptyValidator(null);
            _errorMessageSource2 = _validator2.ErrorMessageSource;
            _validator3          = new NotEqualValidator("test");
            _errorMessageSource3 = _validator3.ErrorMessageSource;

            _propertyRule = PropertyRule.Create(ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.LastName));
            _propertyRule.AddValidator(_validator1);
            _propertyRule.AddValidator(_validator2);
            _propertyRule.AddValidator(_validator3);

            _service = new ValidationRuleGlobalizationService(_defaultMessageEvaluatorMock, _validatorGlobalizationServiceMock);
        }