コード例 #1
0
        public static bool Verify(VerifiableMemberContext context, IEnumerable <IFlagAnnotation> annotations, out VerifyFailure failure)
        {
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var errors = new List <VerifyError>();

            foreach (var annotation in annotations)
            {
                VerifyAnnotation(context, annotation, errors);
            }

            if (errors.Any())
            {
                failure = new VerifyFailure(context.MemberName, $"There are multiple errors in this Member '{context.MemberName}'.", context.Value);
                failure.Details.AddRange(errors);
            }
            else
            {
                failure = null;
            }

            return(failure is null);
        }
コード例 #2
0
        public static VerifyFailure Create(string propertyName, string errorMessage)
        {
            var failure = new VerifyFailure(propertyName, errorMessage);

            var error = new VerifyError
            {
                ErrorMessage     = errorMessage,
                ViaValidatorType = ValidatorType.Custom,
                ValidatorName    = "System.ComponentModel.DataAnnotations.Validator"
            };

            failure.Details.Add(error);

            return(failure);
        }
コード例 #3
0
        public static VerifyResult VerifyOne(VerifiableMemberContext context)
        {
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var annotations = context.Attributes
                              .Where(a => a.GetType().IsDerivedFrom <ValidationAttribute>())
                              .Select(a => a as ValidationAttribute);

            var errors = new List <VerifyError>();

            foreach (var annotation in annotations)
            {
                if (annotation is null)
                {
                    continue;
                }

                if (annotation.IsValid(context.Value))
                {
                    continue;
                }

                var error = new VerifyError
                {
                    ErrorMessage     = annotation.ErrorMessage,
                    ViaValidatorType = ValidatorType.Custom,
                    ValidatorName    = $"DataAnnotation {annotation.GetType().GetFriendlyName()} Validator"
                };

                errors.Add(error);
            }

            if (!errors.Any())
            {
                return(VerifyResult.Success);
            }

            var failure = new VerifyFailure(context.MemberName, $"There are multiple errors in this Member '{context.MemberName}'.", context.Value);

            return(new VerifyResult(failure));
        }
コード例 #4
0
        public static List <VerifyFailure> ConvertToFailures(this Dictionary <string, CorrectVerifyValState> verifyValDictionary)
        {
            var failures = new List <VerifyFailure>();

            if (verifyValDictionary is null)
            {
                return(failures);
            }

            foreach (var pair in verifyValDictionary)
            {
                if (!pair.Value.IncludeFailures)
                {
                    continue;
                }

                var memberName = pair.Key;

                var verifyValSet = pair.Value.GetCorrectVerifyValSet().ToList();

                if (!verifyValSet.Any())
                {
                    continue;
                }

                var count       = verifyValSet.Count;
                var memberValue = verifyValSet[0].VerifiedValue;

                var failure = new VerifyFailure(memberName,
                                                $"Member {memberName} encountered {(count == 1 ? "an error" : "some errors")} during verification.",
                                                memberValue)
                {
                    Details = verifyValSet.Select(verifyVal => new VerifyError {
                        ErrorMessage = verifyVal.ErrorMessage
                    }).ToList()
                };

                failures.Add(failure);
            }

            return(failures);
        }
コード例 #5
0
        public static IEnumerable <VerifyFailure> ConvertToVerifyFailures(this IList <ValidationFailure> originalFailures, Type typeOfValidator)
        {
            var failureHolding = new Dictionary <string, VerifyFailure>();

            foreach (var originalFailure in originalFailures)
            {
                if (!failureHolding.TryGetValue(originalFailure.PropertyName, out var targetFailure))
                {
                    targetFailure = new VerifyFailure(originalFailure.PropertyName, $"There are multiple errors in this Member '{originalFailure.PropertyName}'.", originalFailure.AttemptedValue);
                    failureHolding[originalFailure.PropertyName] = targetFailure;
                }

                var error = new VerifyError
                {
                    ErrorMessage     = originalFailure.ErrorMessage,
                    ViaValidatorType = ValidatorType.Custom,
                    ValidatorName    = $"FluentValidation-{typeOfValidator.GetFriendlyName()}"
                };

                targetFailure.Details.Add(error);
            }

            return(failureHolding.Select(x => x.Value));
        }