public IRuleBuilderOptions <TValidatedType, TProperty> AddMetaValidationRule <TValidator> ( Expression <Func <IEnumerable <TValidator>, bool> > metaValidationRuleExpression) where TValidator : IPropertyValidator { ArgumentUtility.CheckNotNull("metaValidationRuleExpression", metaValidationRuleExpression); var metaValidationRuleExecutor = metaValidationRuleExpression.Compile(); var metaValidationRule = new DelegateMetaValidationRule <TValidator> ( validationRules => { var isValid = metaValidationRuleExecutor(validationRules); if (isValid) { return(MetaValidationRuleValidationResult.CreateValidResult()); } return(MetaValidationRuleValidationResult.CreateInvalidResult( "Meta validation rule '{0}' failed for validator '{1}' on property '{2}.{3}'.", metaValidationRuleExpression, typeof(TValidator).FullName, _addingComponentPropertyRule.Property.DeclaringType.FullName, _addingComponentPropertyRule.Property.Name)); }); _addingMetaValidationPropertyRule.RegisterMetaValidationRule(metaValidationRule); return(this); }
public void Validate() { var fakeResult = MetaValidationRuleValidationResult.CreateValidResult(); var delegateRule = new DelegateMetaValidationRule <IPropertyValidator> (v => fakeResult); var result = delegateRule.Validate(new IPropertyValidator[0]).First(); Assert.That(result, Is.SameAs(fakeResult)); }
public IRuleBuilderOptions <TValidatedType, TProperty> AddMetaValidationRule( Func <IEnumerable <IPropertyValidator>, MetaValidationRuleValidationResult> rule) { ArgumentUtility.CheckNotNull("rule", rule); var metaValidationRule = new DelegateMetaValidationRule <IPropertyValidator> (rule); _addingMetaValidationPropertyRule.RegisterMetaValidationRule(metaValidationRule); return(this); }