private void InvokePropertyValidator(ValidationContext <T> context, TElement value, string propertyName, RuleComponent <T, TElement> component, int index)
        {
            context.MessageFormatter.AppendArgument("CollectionIndex", index);
            bool valid = component.Validate(context, value);

            if (!valid)
            {
                PrepareMessageFormatterForValidationError(context, value);
                var failure = CreateValidationError(context, value, component);
                component.OnFailure?.Invoke(context.InstanceToValidate, context, value, failure.ErrorMessage);
                context.Failures.Add(failure);
            }
        }
Пример #2
0
 public void AddComponent(RuleComponent <T, TProperty> component)
 {
     Rule.Components.Add(component);
 }
Пример #3
0
        private protected void InvokePropertyValidator(ValidationContext <T> context, Lazy <TProperty> accessor, string propertyName, RuleComponent <T, TProperty> component)
        {
            bool valid = component.Validate(context, accessor.Value);

            if (!valid)
            {
                PrepareMessageFormatterForValidationError(context, accessor.Value);
                var failure = CreateValidationError(context, accessor.Value, component);
                context.Failures.Add(failure);
            }
        }
Пример #4
0
        private async Task InvokePropertyValidatorAsync(ValidationContext <T> context, TElement value, string propertyName, RuleComponent <T, TElement> component, int index, CancellationToken cancellation)
        {
            context.MessageFormatter.AppendArgument("CollectionIndex", index);
            bool valid = await component.ValidateAsync(context, value, cancellation);

            if (!valid)
            {
                PrepareMessageFormatterForValidationError(context, value);
                var failure = CreateValidationError(context, value, component);
                context.Failures.Add(failure);
            }
        }
Пример #5
0
        private async Task InvokePropertyValidatorAsync(ValidationContext <T> context, Lazy <TProperty> accessor, string propertyName, RuleComponent <T, TProperty> component, CancellationToken cancellation)
        {
            bool valid = await component.ValidateAsync(context, accessor.Value, cancellation);

            if (!valid)
            {
                PrepareMessageFormatterForValidationError(context, accessor.Value);
                var failure = CreateValidationError(context, accessor.Value, component);
                context.Failures.Add(failure);
            }
        }
Пример #6
0
        private protected void InvokePropertyValidator(ValidationContext <T> context, Lazy <TProperty> accessor, string propertyName, RuleComponent <T, TProperty> component)
        {
            bool valid = component.Validate(context, accessor.Value);

            if (!valid)
            {
                PrepareMessageFormatterForValidationError(context, accessor.Value);
                var failure = CreateValidationError(context, accessor.Value, component);
#pragma warning disable 618
                component.OnFailure?.Invoke(context.InstanceToValidate, context, accessor.Value, failure.ErrorMessage);
#pragma warning restore 618
                context.Failures.Add(failure);
            }
        }
Пример #7
0
        private protected void InvokePropertyValidator(ValidationContext <T> context, Lazy <TProperty> accessor, string propertyName, RuleComponent <T, TProperty> component)
        {
            if (!component.InvokeCondition(context))
            {
                return;
            }
            if (component.HasAsyncCondition && !component.InvokeAsyncCondition(context, CancellationToken.None).GetAwaiter().GetResult())
            {
                return;
            }

            bool valid = component.Validate(context, accessor.Value);

            if (!valid)
            {
                PrepareMessageFormatterForValidationError(context, accessor.Value);
                var failure = CreateValidationError(context, accessor.Value, component);
                component.OnFailure?.Invoke(context.InstanceToValidate, context, accessor.Value, failure.ErrorMessage);
                context.Failures.Add(failure);
            }
        }
Пример #8
0
        private async Task InvokePropertyValidatorAsync(ValidationContext <T> context, Lazy <TProperty> accessor, string propertyName, RuleComponent <T, TProperty> component, CancellationToken cancellation)
        {
            if (!component.InvokeCondition(context))
            {
                return;
            }
            if (!await component.InvokeAsyncCondition(context, cancellation))
            {
                return;
            }
            bool valid = await component.ValidateAsync(context, accessor.Value, cancellation);

            if (!valid)
            {
                PrepareMessageFormatterForValidationError(context, accessor.Value);
                var failure = CreateValidationError(context, accessor.Value, component);
                component.OnFailure?.Invoke(context.InstanceToValidate, context, accessor.Value, failure.ErrorMessage);
                context.Failures.Add(failure);
            }
        }
 public MessageBuilderContext(ValidationContext <T> innerContext, TProperty value, RuleComponent <T, TProperty> component)
 {
     _innerContext = innerContext;
     _value        = value;
     Component     = component;
 }