private static ITextValidator GetOrSet(PredefinedTextValidation predefinedTextValidation,
                                               Func <ITextValidator> setValidatorAction)
        {
            if (Validators.TryGetValue(predefinedTextValidation, out var validator))
            {
                return(validator);
            }

            validator = setValidatorAction();

            Validators.Add(predefinedTextValidation, validator);

            return(validator);
        }
        internal static ITextValidator GetValidator(PredefinedTextValidation predefinedTextValidation)
        {
            switch (predefinedTextValidation)
            {
            case PredefinedTextValidation.IsEmailAddress:
                return(GetOrSet(predefinedTextValidation,
                                () => new RegexTextValidator(new Regex(
                                                                 "^(?(\")(\".+?(?<!\\\\)\"@)|(([0-9a-z]((\\.(?!\\.))|[-!#\\$%&'\\*\\+/=\\?\\^`\\{\\}\\|~\\w])*)(?<=[0-9a-z])@))(?(\\[)(\\[(\\d{1,3}\\.){3}\\d{1,3}\\])|(([0-9a-z][-\\w]*[0-9a-z]*\\.)+[a-z0-9][\\-a-z0-9]{0,22}[a-z0-9]))$"))));

            case PredefinedTextValidation.IsNull:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(value => value == null)));

            case PredefinedTextValidation.IsNullOrEmpty:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(string.IsNullOrEmpty)));

            case PredefinedTextValidation.IsNullOrWhitespace:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(string.IsNullOrWhiteSpace)));

            case PredefinedTextValidation.IsNotNull:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(value => value != null)));

            case PredefinedTextValidation.IsNotNullOrEmpty:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(value => !string.IsNullOrEmpty(value))));

            case PredefinedTextValidation.IsNotNullOrWhitespace:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(value => !string.IsNullOrWhiteSpace(value))));

            case PredefinedTextValidation.IsLettersOnly:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(value => !string.IsNullOrWhiteSpace(value) && value.ToCharArray().All(char.IsLetter))));

            case PredefinedTextValidation.IsNumbersOnly:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(value => !string.IsNullOrWhiteSpace(value) && value.ToCharArray().All(char.IsDigit))));

            case PredefinedTextValidation.IsLettersOrNumbersOnly:
                return(GetOrSet(predefinedTextValidation, () => new FunctionTextValidator(value => !string.IsNullOrWhiteSpace(value) && value.ToCharArray().All(char.IsLetterOrDigit))));

            default:
                throw new ArgumentOutOfRangeException(nameof(predefinedTextValidation), predefinedTextValidation, null);
            }
        }
 public static ITextValidator Get(PredefinedTextValidation predefinedTextValidation)
 {
     return(predefinedTextValidation.GetValidator());
 }
示例#4
0
 public static ITextValidator GetValidator(this PredefinedTextValidation predefinedTextValidation)
 {
     return(PredefinedMapper.GetValidator(predefinedTextValidation));
 }