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); } }
/* 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(); }
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); }